From be494b73d4454d0e835ebe89d9b8f3b19b71acdf Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Wed, 25 Oct 2023 14:53:51 +0100 Subject: [PATCH 001/122] Python: Minor cleanup for string pool interaction This doesn't really seem to impact performance, is just a bit cleaner way to write the QL code. In the worst case, since we do string concat with empty string, we would need to load string + attempt to store new string in string pool, which is useless since we can surely just reuse the integer ID. -- Previously Evaluated non-recursive predicate ImportResolution#f829f0f0::ImportResolution::getImmediateModuleReference#1#ff#reorder_1_0#join_rhs#CSE@5fdc6eia in 1ms (size: 2). Evaluated relational algebra for predicate ImportResolution#f829f0f0::ImportResolution::getImmediateModuleReference#1#ff#reorder_1_0#join_rhs#CSE@5fdc6eia with tuple counts: 1 ~0% {1} r1 = CONSTANT(unique string)[""] 1 ~0% {1} r2 = CONSTANT(unique string)[".__init__"] 2 ~0% {1} r3 = r1 UNION r2 return r3 Evaluated recursive predicate ImportResolution#f829f0f0::ImportResolution::getImmediateModuleReference#1#ff#reorder_1_0@b4f54xlv in 72ms on iteration 1 (delta size: 26339). Evaluated relational algebra for predicate ImportResolution#f829f0f0::ImportResolution::getImmediateModuleReference#1#ff#reorder_1_0@b4f54xlv on iteration 1 running pipeline base with tuple counts: 6382 ~0% {3} r1 = JOIN ImportResolution#f829f0f0::ImportResolution::getImmediateModuleReference#1#ff#reorder_1_0#join_rhs#CSE WITH Module#68efc075::Module::getFile#0#dispred#ff CARTESIAN PRODUCT OUTPUT Rhs.1, Lhs.0, Rhs.0 6066 ~2% {4} r2 = JOIN r1 WITH Module#68efc075::isPreferredModuleForName#2#ff ON FIRST 1 OUTPUT Lhs.2, _, Lhs.1, Rhs.1 {2} r3 = REWRITE r2 WITH Tmp.1 := "", Out.1 := InverseAppend(Tmp.1,In.2,In.3) KEEPING 2 3721 ~0% {2} r4 = SCAN r3 OUTPUT In.1, In.0 25945 ~2% {2} r5 = JOIN r4 WITH ImportResolution#f829f0f0::ImportResolution::getReferenceToModuleName#1#ff ON FIRST 1 OUTPUT Rhs.1, Lhs.1 38 ~4% {3} r6 = SCAN SsaDefinitions#9197156e::SsaSource::init_module_submodule_defn#2#ff OUTPUT In.1, _, In.0 38 ~1% {3} r7 = REWRITE r6 WITH Out.1 := -1 38 ~1% {2} r8 = JOIN r7 WITH py_scope_flow_021#join_rhs ON FIRST 2 OUTPUT Rhs.2, Lhs.2 38 ~0% {2} r9 = JOIN r8 WITH Module#68efc075::Module::getPackageName#0#dispred#ff ON FIRST 1 OUTPUT Lhs.1, Rhs.1 394 ~2% {2} r10 = JOIN r9 WITH Essa#24e22a14::EssaVariable::getSourceVariable#0#dispred#ff_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1 394 ~0% {3} r11 = JOIN r10 WITH DataFlowPublic#c4b6ce7e::EssaNode#ff_10#join_rhs ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Rhs.1 394 ~0% {5} r12 = JOIN r11 WITH Essa#24e22a14::EssaVariable::getName#0#dispred#ff ON FIRST 1 OUTPUT _, Lhs.2, Lhs.1, Rhs.1, _ 394 ~0% {2} r13 = REWRITE r12 WITH Tmp.0 := ".", Tmp.4 := "", Out.0 := (In.2 ++ Tmp.0 ++ In.3 ++ Tmp.4) KEEPING 2 394 ~0% {5} r14 = JOIN r11 WITH Essa#24e22a14::EssaVariable::getName#0#dispred#ff ON FIRST 1 OUTPUT _, Lhs.2, Lhs.1, Rhs.1, _ 394 ~1% {2} r15 = REWRITE r14 WITH Tmp.0 := ".", Tmp.4 := ".__init__", Out.0 := (In.2 ++ Tmp.0 ++ In.3 ++ Tmp.4) KEEPING 2 788 ~3% {2} r16 = r13 UNION r15 401 ~2% {2} r17 = JOIN r16 WITH Module#68efc075::isPreferredModuleForName#2#ff_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1 394 ~1% {2} r18 = JOIN r17 WITH Module#68efc075::Module::getFile#0#dispred#ff_10#join_rhs ON FIRST 1 OUTPUT Lhs.1, Rhs.1 26339 ~1% {2} r19 = r5 UNION r18 return r19 -- Now Evaluated recursive predicate ImportResolution#f829f0f0::ImportResolution::getImmediateModuleReference#1#ff#reorder_1_0@409a0xhe in 8ms on iteration 1 (delta size: 26339). Evaluated relational algebra for predicate ImportResolution#f829f0f0::ImportResolution::getImmediateModuleReference#1#ff#reorder_1_0@409a0xhe on iteration 1 running pipeline base with tuple counts: 3033 ~0% {2} r1 = JOIN Module#68efc075::Module::getFile#0#dispred#ff_10#join_rhs WITH Module#68efc075::isPreferredModuleForName#2#ff ON FIRST 1 OUTPUT Rhs.1, Lhs.1 3033 ~0% {4} r2 = JOIN Module#68efc075::Module::getFile#0#dispred#ff_10#join_rhs WITH Module#68efc075::isPreferredModuleForName#2#ff ON FIRST 1 OUTPUT Lhs.1, _, Rhs.1, _ {2} r3 = REWRITE r2 WITH Tmp.1 := "", Tmp.3 := ".__init__", Out.1 := InverseAppend(Tmp.1,Tmp.3,In.2) KEEPING 2 688 ~0% {2} r4 = SCAN r3 OUTPUT In.1, In.0 3721 ~0% {2} r5 = r1 UNION r4 25945 ~2% {2} r6 = JOIN r5 WITH ImportResolution#f829f0f0::ImportResolution::getReferenceToModuleName#1#ff ON FIRST 1 OUTPUT Rhs.1, Lhs.1 38 ~4% {3} r7 = SCAN SsaDefinitions#9197156e::SsaSource::init_module_submodule_defn#2#ff OUTPUT In.1, _, In.0 38 ~1% {3} r8 = REWRITE r7 WITH Out.1 := -1 38 ~1% {2} r9 = JOIN r8 WITH py_scope_flow_021#join_rhs ON FIRST 2 OUTPUT Rhs.2, Lhs.2 38 ~0% {2} r10 = JOIN r9 WITH Module#68efc075::Module::getPackageName#0#dispred#ff ON FIRST 1 OUTPUT Lhs.1, Rhs.1 394 ~2% {2} r11 = JOIN r10 WITH Essa#24e22a14::EssaVariable::getSourceVariable#0#dispred#ff_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1 394 ~0% {3} r12 = JOIN r11 WITH DataFlowPublic#c4b6ce7e::EssaNode#ff_10#join_rhs ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Rhs.1 394 ~2% {4} r13 = JOIN r12 WITH Essa#24e22a14::EssaVariable::getName#0#dispred#ff ON FIRST 1 OUTPUT _, Lhs.2, Lhs.1, Rhs.1 394 ~0% {2} r14 = REWRITE r13 WITH Tmp.0 := ".", Out.0 := (In.2 ++ Tmp.0 ++ In.3) KEEPING 2 394 ~0% {5} r15 = JOIN r12 WITH Essa#24e22a14::EssaVariable::getName#0#dispred#ff ON FIRST 1 OUTPUT _, Lhs.2, Lhs.1, Rhs.1, _ 394 ~5% {2} r16 = REWRITE r15 WITH Tmp.0 := ".", Tmp.0 := (In.2 ++ Tmp.0 ++ In.3), Tmp.4 := ".__init__", Out.0 := (Tmp.0 ++ Tmp.4) KEEPING 2 788 ~0% {2} r17 = r14 UNION r16 401 ~1% {2} r18 = JOIN r17 WITH Module#68efc075::isPreferredModuleForName#2#ff_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1 394 ~1% {2} r19 = JOIN r18 WITH Module#68efc075::Module::getFile#0#dispred#ff_10#join_rhs ON FIRST 1 OUTPUT Lhs.1, Rhs.1 26339 ~0% {2} r20 = r6 UNION r19 return r20 --- .../semmle/python/dataflow/new/internal/ImportResolution.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/ImportResolution.qll b/python/ql/lib/semmle/python/dataflow/new/internal/ImportResolution.qll index 64ae4e50430..e11a7913268 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/ImportResolution.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/ImportResolution.qll @@ -227,7 +227,7 @@ module ImportResolution { */ pragma[inline] private Module getModuleFromName(string name) { - isPreferredModuleForName(result.getFile(), name + ["", ".__init__"]) + isPreferredModuleForName(result.getFile(), [name, name + ".__init__"]) } /** Gets the module from which attributes are imported by `i`. */ From 3939167ba287ecba765b19548da72026c54aefe3 Mon Sep 17 00:00:00 2001 From: Max Schaefer Date: Thu, 26 Oct 2023 11:28:06 +0100 Subject: [PATCH 002/122] Include more details in the message for `py/weak-cryptographic-algorithm`. Specifically, we add a link to the location where the cryptographic algorithm is configured, which can be far away from its use. --- .../semmle/python/frameworks/Cryptodome.qll | 22 ++++++---- .../semmle/python/frameworks/Cryptography.qll | 42 ++++++++++--------- .../ql/lib/semmle/python/frameworks/Rsa.qll | 12 ++++++ .../lib/semmle/python/frameworks/Stdlib.qll | 29 +++++++++++-- .../semmle/python/internal/ConceptsShared.qll | 6 +++ .../Security/CWE-327/BrokenCryptoAlgorithm.ql | 12 ++---- .../BrokenCryptoAlgorithm.expected | 8 ++-- 7 files changed, 89 insertions(+), 42 deletions(-) diff --git a/python/ql/lib/semmle/python/frameworks/Cryptodome.qll b/python/ql/lib/semmle/python/frameworks/Cryptodome.qll index 1adca253271..f0a309644ad 100644 --- a/python/ql/lib/semmle/python/frameworks/Cryptodome.qll +++ b/python/ql/lib/semmle/python/frameworks/Cryptodome.qll @@ -128,6 +128,8 @@ private module CryptodomeModel { this = newCall.getReturn().getMember(methodName).getACall() } + override DataFlow::Node getInitialization() { result = newCall } + override Cryptography::CryptographicAlgorithm getAlgorithm() { result.matchesName(cipherName) } override DataFlow::Node getAnInput() { @@ -181,21 +183,23 @@ private module CryptodomeModel { class CryptodomeGenericSignatureOperation extends Cryptography::CryptographicOperation::Range, DataFlow::CallCfgNode { + API::CallNode newCall; string methodName; string signatureName; CryptodomeGenericSignatureOperation() { methodName in ["sign", "verify"] and - this = + newCall = API::moduleImport(["Crypto", "Cryptodome"]) .getMember("Signature") .getMember(signatureName) .getMember("new") - .getReturn() - .getMember(methodName) - .getACall() + .getACall() and + this = newCall.getReturn().getMember(methodName).getACall() } + override DataFlow::Node getInitialization() { result = newCall } + override Cryptography::CryptographicAlgorithm getAlgorithm() { result.matchesName(signatureName) } @@ -221,19 +225,23 @@ private module CryptodomeModel { class CryptodomeGenericHashOperation extends Cryptography::CryptographicOperation::Range, DataFlow::CallCfgNode { + API::CallNode newCall; string hashName; CryptodomeGenericHashOperation() { exists(API::Node hashModule | hashModule = - API::moduleImport(["Crypto", "Cryptodome"]).getMember("Hash").getMember(hashName) + API::moduleImport(["Crypto", "Cryptodome"]).getMember("Hash").getMember(hashName) and + newCall = hashModule.getMember("new").getACall() | - this = hashModule.getMember("new").getACall() + this = newCall or - this = hashModule.getMember("new").getReturn().getMember("update").getACall() + this = newCall.getReturn().getMember("update").getACall() ) } + override DataFlow::Node getInitialization() { result = newCall } + override Cryptography::CryptographicAlgorithm getAlgorithm() { result.matchesName(hashName) } override DataFlow::Node getAnInput() { result in [this.getArg(0), this.getArgByName("data")] } diff --git a/python/ql/lib/semmle/python/frameworks/Cryptography.qll b/python/ql/lib/semmle/python/frameworks/Cryptography.qll index 07d80aad7f5..41d69d064d7 100644 --- a/python/ql/lib/semmle/python/frameworks/Cryptography.qll +++ b/python/ql/lib/semmle/python/frameworks/Cryptography.qll @@ -209,18 +209,18 @@ private module CryptographyModel { class CryptographyGenericCipherOperation extends Cryptography::CryptographicOperation::Range, DataFlow::MethodCallNode { + API::CallNode init; string algorithmName; string modeName; CryptographyGenericCipherOperation() { - this = - cipherInstance(algorithmName, modeName) - .getMember(["decryptor", "encryptor"]) - .getReturn() - .getMember(["update", "update_into"]) - .getACall() + init = + cipherInstance(algorithmName, modeName).getMember(["decryptor", "encryptor"]).getACall() and + this = init.getReturn().getMember(["update", "update_into"]).getACall() } + override DataFlow::Node getInitialization() { result = init } + override Cryptography::CryptographicAlgorithm getAlgorithm() { result.matchesName(algorithmName) } @@ -247,19 +247,17 @@ private module CryptographyModel { } /** Gets a reference to a Hash instance using algorithm with `algorithmName`. */ - private API::Node hashInstance(string algorithmName) { - exists(API::CallNode call | result = call.getReturn() | - call = - API::moduleImport("cryptography") - .getMember("hazmat") - .getMember("primitives") - .getMember("hashes") - .getMember("Hash") - .getACall() and - algorithmClassRef(algorithmName).getReturn().getAValueReachableFromSource() in [ - call.getArg(0), call.getArgByName("algorithm") - ] - ) + private API::CallNode hashInstance(string algorithmName) { + result = + API::moduleImport("cryptography") + .getMember("hazmat") + .getMember("primitives") + .getMember("hashes") + .getMember("Hash") + .getACall() and + algorithmClassRef(algorithmName).getReturn().getAValueReachableFromSource() in [ + result.getArg(0), result.getArgByName("algorithm") + ] } /** @@ -268,12 +266,16 @@ private module CryptographyModel { class CryptographyGenericHashOperation extends Cryptography::CryptographicOperation::Range, DataFlow::MethodCallNode { + API::CallNode init; string algorithmName; CryptographyGenericHashOperation() { - this = hashInstance(algorithmName).getMember("update").getACall() + init = hashInstance(algorithmName) and + this = init.getReturn().getMember("update").getACall() } + override DataFlow::Node getInitialization() { result = init } + override Cryptography::CryptographicAlgorithm getAlgorithm() { result.matchesName(algorithmName) } diff --git a/python/ql/lib/semmle/python/frameworks/Rsa.qll b/python/ql/lib/semmle/python/frameworks/Rsa.qll index 1c582eaa799..4b7142177f9 100644 --- a/python/ql/lib/semmle/python/frameworks/Rsa.qll +++ b/python/ql/lib/semmle/python/frameworks/Rsa.qll @@ -37,6 +37,8 @@ private module Rsa { class RsaEncryptCall extends Cryptography::CryptographicOperation::Range, DataFlow::CallCfgNode { RsaEncryptCall() { this = API::moduleImport("rsa").getMember("encrypt").getACall() } + override DataFlow::Node getInitialization() { result = this } + override Cryptography::CryptographicAlgorithm getAlgorithm() { result.getName() = "RSA" } override DataFlow::Node getAnInput() { @@ -54,6 +56,8 @@ private module Rsa { class RsaDecryptCall extends Cryptography::CryptographicOperation::Range, DataFlow::CallCfgNode { RsaDecryptCall() { this = API::moduleImport("rsa").getMember("decrypt").getACall() } + override DataFlow::Node getInitialization() { result = this } + override Cryptography::CryptographicAlgorithm getAlgorithm() { result.getName() = "RSA" } override DataFlow::Node getAnInput() { result in [this.getArg(0), this.getArgByName("crypto")] } @@ -69,6 +73,8 @@ private module Rsa { class RsaSignCall extends Cryptography::CryptographicOperation::Range, DataFlow::CallCfgNode { RsaSignCall() { this = API::moduleImport("rsa").getMember("sign").getACall() } + override DataFlow::Node getInitialization() { result = this } + override Cryptography::CryptographicAlgorithm getAlgorithm() { // signature part result.getName() = "RSA" @@ -96,6 +102,8 @@ private module Rsa { class RsaVerifyCall extends Cryptography::CryptographicOperation::Range, DataFlow::CallCfgNode { RsaVerifyCall() { this = API::moduleImport("rsa").getMember("verify").getACall() } + override DataFlow::Node getInitialization() { result = this } + override Cryptography::CryptographicAlgorithm getAlgorithm() { // note that technically there is also a hashing operation going on but we don't // know what algorithm is used up front, since it is encoded in the signature @@ -121,6 +129,8 @@ private module Rsa { { RsaComputeHashCall() { this = API::moduleImport("rsa").getMember("compute_hash").getACall() } + override DataFlow::Node getInitialization() { result = this } + override Cryptography::CryptographicAlgorithm getAlgorithm() { exists(StrConst str, DataFlow::Node hashNameArg | hashNameArg in [this.getArg(1), this.getArgByName("method_name")] and @@ -144,6 +154,8 @@ private module Rsa { class RsaSignHashCall extends Cryptography::CryptographicOperation::Range, DataFlow::CallCfgNode { RsaSignHashCall() { this = API::moduleImport("rsa").getMember("sign_hash").getACall() } + override DataFlow::Node getInitialization() { result = this } + override Cryptography::CryptographicAlgorithm getAlgorithm() { result.getName() = "RSA" } override DataFlow::Node getAnInput() { diff --git a/python/ql/lib/semmle/python/frameworks/Stdlib.qll b/python/ql/lib/semmle/python/frameworks/Stdlib.qll index ec79a6dfddf..2c8c8bbb6f0 100644 --- a/python/ql/lib/semmle/python/frameworks/Stdlib.qll +++ b/python/ql/lib/semmle/python/frameworks/Stdlib.qll @@ -2747,6 +2747,8 @@ private module StdlibPrivate { exists(this.getParameter(1, "data")) } + override DataFlow::Node getInitialization() { result = this } + override Cryptography::CryptographicAlgorithm getAlgorithm() { result.matchesName(hashName) } override DataFlow::Node getAnInput() { result = this.getParameter(1, "data").asSink() } @@ -2758,12 +2760,16 @@ private module StdlibPrivate { * A hashing operation by using the `update` method on the result of calling the `hashlib.new` function. */ class HashlibNewUpdateCall extends Cryptography::CryptographicOperation::Range, API::CallNode { + API::CallNode init; string hashName; HashlibNewUpdateCall() { - this = hashlibNewCall(hashName).getReturn().getMember("update").getACall() + init = hashlibNewCall(hashName) and + this = init.getReturn().getMember("update").getACall() } + override DataFlow::Node getInitialization() { result = init } + override Cryptography::CryptographicAlgorithm getAlgorithm() { result.matchesName(hashName) } override DataFlow::Node getAnInput() { result = this.getArg(0) } @@ -2802,7 +2808,14 @@ private module StdlibPrivate { * (such as `hashlib.md5`), by calling its' `update` method. */ class HashlibHashClassUpdateCall extends HashlibGenericHashOperation { - HashlibHashClassUpdateCall() { this = hashClass.getReturn().getMember("update").getACall() } + API::CallNode init; + + HashlibHashClassUpdateCall() { + init = hashClass.getACall() and + this = hashClass.getReturn().getMember("update").getACall() + } + + override DataFlow::Node getInitialization() { result = init } override DataFlow::Node getAnInput() { result = this.getArg(0) } } @@ -2819,6 +2832,8 @@ private module StdlibPrivate { exists([this.getArg(0), this.getArgByName("string")]) } + override DataFlow::Node getInitialization() { result = this } + override DataFlow::Node getAnInput() { result = this.getArg(0) or @@ -2865,6 +2880,8 @@ private module StdlibPrivate { exists(this.getParameter(1, "msg").asSink()) } + override DataFlow::Node getInitialization() { result = this } + override API::Node getDigestArg() { result = digestArg } override DataFlow::Node getAnInput() { result = this.getParameter(1, "msg").asSink() } @@ -2876,12 +2893,16 @@ private module StdlibPrivate { * See https://docs.python.org/3.11/library/hmac.html#hmac.HMAC.update */ class HmacUpdateCall extends HmacCryptographicOperation { + API::CallNode init; API::Node digestArg; HmacUpdateCall() { - this = getHmacConstructorCall(digestArg).getReturn().getMember("update").getACall() + init = getHmacConstructorCall(digestArg) and + this = init.getReturn().getMember("update").getACall() } + override DataFlow::Node getInitialization() { result = init } + override API::Node getDigestArg() { result = digestArg } override DataFlow::Node getAnInput() { result = this.getParameter(0, "msg").asSink() } @@ -2895,6 +2916,8 @@ private module StdlibPrivate { class HmacDigestCall extends HmacCryptographicOperation { HmacDigestCall() { this = API::moduleImport("hmac").getMember("digest").getACall() } + override DataFlow::Node getInitialization() { result = this } + override API::Node getDigestArg() { result = this.getParameter(2, "digest") } override DataFlow::Node getAnInput() { result = this.getParameter(1, "msg").asSink() } diff --git a/python/ql/lib/semmle/python/internal/ConceptsShared.qll b/python/ql/lib/semmle/python/internal/ConceptsShared.qll index e86b156e204..135f830e47d 100644 --- a/python/ql/lib/semmle/python/internal/ConceptsShared.qll +++ b/python/ql/lib/semmle/python/internal/ConceptsShared.qll @@ -40,6 +40,9 @@ module Cryptography { /** Gets the algorithm used, if it matches a known `CryptographicAlgorithm`. */ CryptographicAlgorithm getAlgorithm() { result = super.getAlgorithm() } + /** Gets the data-flow node where the cryptographic algorithm used in this operation is configured. */ + DataFlow::Node getInitialization() { result = super.getInitialization() } + /** Gets an input the algorithm is used on, for example the plain text input to be encrypted. */ DataFlow::Node getAnInput() { result = super.getAnInput() } @@ -65,6 +68,9 @@ module Cryptography { * extend `CryptographicOperation` instead. */ abstract class Range extends DataFlow::Node { + /** Gets the data-flow node where the cryptographic algorithm used in this operation is configured. */ + abstract DataFlow::Node getInitialization(); + /** Gets the algorithm used, if it matches a known `CryptographicAlgorithm`. */ abstract CryptographicAlgorithm getAlgorithm(); diff --git a/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql b/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql index 9b741c3d76b..611d595038b 100644 --- a/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql +++ b/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql @@ -13,18 +13,14 @@ import python import semmle.python.Concepts -from - Cryptography::CryptographicOperation operation, Cryptography::CryptographicAlgorithm algorithm, - string msgPrefix +from Cryptography::CryptographicOperation operation, string msgPrefix where - algorithm = operation.getAlgorithm() and // `Cryptography::HashingAlgorithm` and `Cryptography::PasswordHashingAlgorithm` are // handled by `py/weak-sensitive-data-hashing` - algorithm instanceof Cryptography::EncryptionAlgorithm and - ( + exists(Cryptography::EncryptionAlgorithm algorithm | algorithm = operation.getAlgorithm() | algorithm.isWeak() and - msgPrefix = "The cryptographic algorithm " + operation.getAlgorithm().getName() + msgPrefix = "The cryptographic algorithm " + algorithm.getName() ) or operation.getBlockMode().isWeak() and msgPrefix = "The block mode " + operation.getBlockMode() -select operation, msgPrefix + " is broken or weak, and should not be used." +select operation, msgPrefix + " (configured $@) is broken or weak, and should not be used.", operation.getInitialization(), "here" diff --git a/python/ql/test/query-tests/Security/CWE-327-BrokenCryptoAlgorithm/BrokenCryptoAlgorithm.expected b/python/ql/test/query-tests/Security/CWE-327-BrokenCryptoAlgorithm/BrokenCryptoAlgorithm.expected index 4d6ee66ed47..8283aa0b14f 100644 --- a/python/ql/test/query-tests/Security/CWE-327-BrokenCryptoAlgorithm/BrokenCryptoAlgorithm.expected +++ b/python/ql/test/query-tests/Security/CWE-327-BrokenCryptoAlgorithm/BrokenCryptoAlgorithm.expected @@ -1,4 +1,4 @@ -| test_cryptodome.py:11:13:11:42 | ControlFlowNode for Attribute() | The cryptographic algorithm ARC4 is broken or weak, and should not be used. | -| test_cryptodome.py:16:13:16:42 | ControlFlowNode for Attribute() | The block mode ECB is broken or weak, and should not be used. | -| test_cryptography.py:13:13:13:44 | ControlFlowNode for Attribute() | The cryptographic algorithm ARC4 is broken or weak, and should not be used. | -| test_cryptography.py:22:13:22:58 | ControlFlowNode for Attribute() | The block mode ECB is broken or weak, and should not be used. | +| test_cryptodome.py:11:13:11:42 | ControlFlowNode for Attribute() | The cryptographic algorithm ARC4 (configured $@) is broken or weak, and should not be used. | test_cryptodome.py:10:10:10:22 | ControlFlowNode for Attribute() | here | +| test_cryptodome.py:16:13:16:42 | ControlFlowNode for Attribute() | The block mode ECB (configured $@) is broken or weak, and should not be used. | test_cryptodome.py:15:10:15:35 | ControlFlowNode for Attribute() | here | +| test_cryptography.py:13:13:13:44 | ControlFlowNode for Attribute() | The cryptographic algorithm ARC4 (configured $@) is broken or weak, and should not be used. | test_cryptography.py:12:13:12:30 | ControlFlowNode for Attribute() | here | +| test_cryptography.py:22:13:22:58 | ControlFlowNode for Attribute() | The block mode ECB (configured $@) is broken or weak, and should not be used. | test_cryptography.py:21:13:21:30 | ControlFlowNode for Attribute() | here | From 741735cc830d978cd0fcbb8efa40d2cd297b7ce2 Mon Sep 17 00:00:00 2001 From: Max Schaefer Date: Thu, 26 Oct 2023 14:47:24 +0100 Subject: [PATCH 003/122] Port changes to JavaScript. --- .../javascript/frameworks/CryptoLibraries.qll | 67 ++++++++++++++----- .../javascript/internal/ConceptsShared.qll | 6 ++ .../BrokenCryptoAlgorithmCustomizations.qll | 23 ++++--- .../Security/CWE-327/BrokenCryptoAlgorithm.ql | 13 ++-- .../CWE-327/BrokenCryptoAlgorithm.expected | 10 +-- 5 files changed, 83 insertions(+), 36 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/frameworks/CryptoLibraries.qll b/javascript/ql/lib/semmle/javascript/frameworks/CryptoLibraries.qll index e5425b2fb88..556978a0c87 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/CryptoLibraries.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/CryptoLibraries.qll @@ -51,6 +51,7 @@ private module AsmCrypto { private class Apply extends CryptographicOperation::Range instanceof DataFlow::CallNode { DataFlow::Node input; CryptographicAlgorithm algorithm; // non-functional + DataFlow::PropRead algorithmSelection; private string algorithmName; private string methodName; @@ -68,11 +69,14 @@ private module AsmCrypto { exists(DataFlow::SourceNode asmCrypto | asmCrypto = DataFlow::globalVarRef("asmCrypto") and algorithm.matchesName(algorithmName) and - this = asmCrypto.getAPropertyRead(algorithmName).getAMemberCall(methodName) and + algorithmSelection = asmCrypto.getAPropertyRead(algorithmName) and + this = algorithmSelection.getAMemberCall(methodName) and input = this.getArgument(0) ) } + override DataFlow::Node getInitialization() { result = algorithmSelection } + override DataFlow::Node getAnInput() { result = input } override CryptographicAlgorithm getAlgorithm() { result = algorithm } @@ -103,6 +107,7 @@ private module BrowserIdCrypto { private class Apply extends CryptographicOperation::Range instanceof DataFlow::MethodCallNode { CryptographicAlgorithm algorithm; // non-functional + DataFlow::CallNode keygen; Apply() { /* @@ -122,8 +127,7 @@ private module BrowserIdCrypto { */ exists( - DataFlow::SourceNode mod, DataFlow::Node algorithmNameNode, DataFlow::CallNode keygen, - DataFlow::FunctionNode callback + DataFlow::SourceNode mod, DataFlow::Node algorithmNameNode, DataFlow::FunctionNode callback | mod = DataFlow::moduleImport("browserid-crypto") and keygen = mod.getAMemberCall("generateKeypair") and @@ -134,6 +138,8 @@ private module BrowserIdCrypto { ) } + override DataFlow::Node getInitialization() { result = keygen } + override DataFlow::Node getAnInput() { result = super.getArgument(0) } override CryptographicAlgorithm getAlgorithm() { result = algorithm } @@ -239,6 +245,8 @@ private module NodeJSCrypto { Apply() { this = instantiation.getAMethodCall(any(string m | m = "update" or m = "write")) } + override DataFlow::Node getInitialization() { result = instantiation } + override DataFlow::Node getAnInput() { result = super.getArgument(0) } override CryptographicAlgorithm getAlgorithm() { result = instantiation.getAlgorithm() } @@ -324,7 +332,9 @@ private module CryptoJS { ) } - private API::CallNode getEncryptionApplication(API::Node input, CryptographicAlgorithm algorithm) { + private API::CallNode getEncryptionApplication( + API::Node input, API::Node algorithmNode, CryptographicAlgorithm algorithm + ) { /* * ``` * var CryptoJS = require("crypto-js"); @@ -338,11 +348,12 @@ private module CryptoJS { * Also matches where `CryptoJS.` has been replaced by `require("crypto-js/")` */ - result = getAlgorithmNode(algorithm).getMember("encrypt").getACall() and + algorithmNode = getAlgorithmNode(algorithm) and + result = algorithmNode.getMember("encrypt").getACall() and input = result.getParameter(0) } - private API::CallNode getDirectApplication(API::Node input, CryptographicAlgorithm algorithm) { + private API::CallNode getDirectApplication(API::Node input, API::Node algorithmNode, CryptographicAlgorithm algorithm) { /* * ``` * var CryptoJS = require("crypto-js"); @@ -356,8 +367,8 @@ private module CryptoJS { * An `Hmac`-prefix of is ignored. * Also matches where `CryptoJS.` has been replaced by `require("crypto-js/")` */ - - result = getAlgorithmNode(algorithm).getACall() and + algorithmNode = getAlgorithmNode(algorithm) and + result = algorithmNode.getACall() and input = result.getParameter(0) } @@ -389,18 +400,23 @@ private module CryptoJS { private class Apply extends CryptographicOperation::Range instanceof API::CallNode { API::Node input; CryptographicAlgorithm algorithm; // non-functional + DataFlow::Node instantiation; Apply() { - this = getEncryptionApplication(input, algorithm) - or - this = getDirectApplication(input, algorithm) - or - exists(InstantiatedAlgorithm instantiation | - this = getUpdatedApplication(input, instantiation) and - algorithm = instantiation.getAlgorithm() + exists(API::Node algorithmNode | + this = getEncryptionApplication(input, algorithmNode, algorithm) + or + this = getDirectApplication(input, algorithmNode, algorithm) + | + instantiation = algorithmNode.asSource() ) + or + this = getUpdatedApplication(input, instantiation) and + algorithm = instantiation.(InstantiatedAlgorithm).getAlgorithm() } + override DataFlow::Node getInitialization() { result = instantiation } + override DataFlow::Node getAnInput() { result = input.asSink() } override CryptographicAlgorithm getAlgorithm() { result = algorithm } @@ -504,6 +520,8 @@ private module TweetNaCl { ) } + override DataFlow::Node getInitialization() { result = this } + override DataFlow::Node getAnInput() { result = input } override CryptographicAlgorithm getAlgorithm() { result = algorithm } @@ -539,6 +557,7 @@ private module HashJs { private class Apply extends CryptographicOperation::Range instanceof DataFlow::CallNode { DataFlow::Node input; CryptographicAlgorithm algorithm; // non-functional + DataFlow::CallNode init; Apply() { /* @@ -553,11 +572,13 @@ private module HashJs { * ``` * Also matches where `hash.()` has been replaced by a more specific require a la `require("hash.js/lib/hash/sha/512")` */ - - this = getAlgorithmNode(algorithm).getAMemberCall("update") and + init = getAlgorithmNode(algorithm) and + this = init.getAMemberCall("update") and input = super.getArgument(0) } + override DataFlow::Node getInitialization() { result = init } + override DataFlow::Node getAnInput() { result = input } override CryptographicAlgorithm getAlgorithm() { result = algorithm } @@ -653,6 +674,8 @@ private module Forge { algorithm = cipher.getAlgorithm() } + override DataFlow::Node getInitialization() { result = cipher } + override DataFlow::Node getAnInput() { result = input } override CryptographicAlgorithm getAlgorithm() { result = algorithm } @@ -715,6 +738,8 @@ private module Md5 { super.getArgument(0) = input } + override DataFlow::Node getInitialization() { result = this } + override DataFlow::Node getAnInput() { result = input } override CryptographicAlgorithm getAlgorithm() { result = algorithm } @@ -731,17 +756,21 @@ private module Bcrypt { private class Apply extends CryptographicOperation::Range instanceof DataFlow::CallNode { DataFlow::Node input; CryptographicAlgorithm algorithm; + API::Node init; Apply() { // `require("bcrypt").hash(password);` with minor naming variations algorithm.matchesName("BCRYPT") and + init = API::moduleImport(["bcrypt", "bcryptjs", "bcrypt-nodejs"]) and this = - API::moduleImport(["bcrypt", "bcryptjs", "bcrypt-nodejs"]) + init .getMember(["hash", "hashSync"]) .getACall() and super.getArgument(0) = input } + override DataFlow::Node getInitialization() { result = init.asSource() } + override DataFlow::Node getAnInput() { result = input } override CryptographicAlgorithm getAlgorithm() { result = algorithm } @@ -769,6 +798,8 @@ private module Hasha { ) } + override DataFlow::Node getInitialization() { result = this } + override DataFlow::Node getAnInput() { result = input } override CryptographicAlgorithm getAlgorithm() { result = algorithm } diff --git a/javascript/ql/lib/semmle/javascript/internal/ConceptsShared.qll b/javascript/ql/lib/semmle/javascript/internal/ConceptsShared.qll index e86b156e204..135f830e47d 100644 --- a/javascript/ql/lib/semmle/javascript/internal/ConceptsShared.qll +++ b/javascript/ql/lib/semmle/javascript/internal/ConceptsShared.qll @@ -40,6 +40,9 @@ module Cryptography { /** Gets the algorithm used, if it matches a known `CryptographicAlgorithm`. */ CryptographicAlgorithm getAlgorithm() { result = super.getAlgorithm() } + /** Gets the data-flow node where the cryptographic algorithm used in this operation is configured. */ + DataFlow::Node getInitialization() { result = super.getInitialization() } + /** Gets an input the algorithm is used on, for example the plain text input to be encrypted. */ DataFlow::Node getAnInput() { result = super.getAnInput() } @@ -65,6 +68,9 @@ module Cryptography { * extend `CryptographicOperation` instead. */ abstract class Range extends DataFlow::Node { + /** Gets the data-flow node where the cryptographic algorithm used in this operation is configured. */ + abstract DataFlow::Node getInitialization(); + /** Gets the algorithm used, if it matches a known `CryptographicAlgorithm`. */ abstract CryptographicAlgorithm getAlgorithm(); diff --git a/javascript/ql/lib/semmle/javascript/security/dataflow/BrokenCryptoAlgorithmCustomizations.qll b/javascript/ql/lib/semmle/javascript/security/dataflow/BrokenCryptoAlgorithmCustomizations.qll index 38d048da84e..e0db75ab52c 100644 --- a/javascript/ql/lib/semmle/javascript/security/dataflow/BrokenCryptoAlgorithmCustomizations.qll +++ b/javascript/ql/lib/semmle/javascript/security/dataflow/BrokenCryptoAlgorithmCustomizations.qll @@ -19,7 +19,10 @@ module BrokenCryptoAlgorithm { /** * A data flow sink for sensitive information in broken or weak cryptographic algorithms. */ - abstract class Sink extends DataFlow::Node { } + abstract class Sink extends DataFlow::Node { + /** Gets the data-flow node where the cryptographic algorithm used in this operation is configured. */ + abstract DataFlow::Node getInitialization(); + } /** * A sanitizer for sensitive information in broken or weak cryptographic algorithms. @@ -38,15 +41,17 @@ module BrokenCryptoAlgorithm { * An expression used by a broken or weak cryptographic algorithm. */ class WeakCryptographicOperationSink extends Sink { + CryptographicOperation application; + WeakCryptographicOperationSink() { - exists(CryptographicOperation application | - ( - application.getAlgorithm().isWeak() - or - application.getBlockMode().isWeak() - ) and - this = application.getAnInput() - ) + ( + application.getAlgorithm().isWeak() + or + application.getBlockMode().isWeak() + ) and + this = application.getAnInput() } + + override DataFlow::Node getInitialization() { result = application.getInitialization() } } } diff --git a/javascript/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql b/javascript/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql index 9826ebefe5f..f580b2150ac 100644 --- a/javascript/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql +++ b/javascript/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql @@ -16,9 +16,14 @@ import semmle.javascript.security.dataflow.BrokenCryptoAlgorithmQuery import semmle.javascript.security.SensitiveActions import DataFlow::PathGraph -from Configuration cfg, DataFlow::PathNode source, DataFlow::PathNode sink +from + Configuration cfg, DataFlow::PathNode source, DataFlow::PathNode sink, Source sourceNode, + Sink sinkNode where cfg.hasFlowPath(source, sink) and - not source.getNode() instanceof CleartextPasswordExpr // flagged by js/insufficient-password-hash -select sink.getNode(), source, sink, "A broken or weak cryptographic algorithm depends on $@.", - source.getNode(), "sensitive data from " + source.getNode().(Source).describe() + sourceNode = source.getNode() and + sinkNode = sink.getNode() and + not sourceNode instanceof CleartextPasswordExpr // flagged by js/insufficient-password-hash +select sinkNode, source, sink, + "A broken or weak cryptographic algorithm (configured $@) depends on $@.", + sinkNode.getInitialization(), "here", sourceNode, "sensitive data from " + sourceNode.describe() diff --git a/javascript/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected b/javascript/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected index 1938b020355..8dfef853bda 100644 --- a/javascript/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected +++ b/javascript/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected @@ -26,8 +26,8 @@ edges | tst.js:19:17:19:24 | password | tst.js:19:17:19:24 | password | | tst.js:22:21:22:30 | secretText | tst.js:22:21:22:30 | secretText | #select -| tst.js:11:17:11:26 | secretText | tst.js:3:18:3:24 | trusted | tst.js:11:17:11:26 | secretText | A broken or weak cryptographic algorithm depends on $@. | tst.js:3:18:3:24 | trusted | sensitive data from an access to trusted | -| tst.js:11:17:11:26 | secretText | tst.js:11:17:11:26 | secretText | tst.js:11:17:11:26 | secretText | A broken or weak cryptographic algorithm depends on $@. | tst.js:11:17:11:26 | secretText | sensitive data from an access to secretText | -| tst.js:17:17:17:25 | o.trusted | tst.js:17:17:17:25 | o.trusted | tst.js:17:17:17:25 | o.trusted | A broken or weak cryptographic algorithm depends on $@. | tst.js:17:17:17:25 | o.trusted | sensitive data from an access to trusted | -| tst.js:22:21:22:30 | secretText | tst.js:3:18:3:24 | trusted | tst.js:22:21:22:30 | secretText | A broken or weak cryptographic algorithm depends on $@. | tst.js:3:18:3:24 | trusted | sensitive data from an access to trusted | -| tst.js:22:21:22:30 | secretText | tst.js:22:21:22:30 | secretText | tst.js:22:21:22:30 | secretText | A broken or weak cryptographic algorithm depends on $@. | tst.js:22:21:22:30 | secretText | sensitive data from an access to secretText | +| tst.js:11:17:11:26 | secretText | tst.js:3:18:3:24 | trusted | tst.js:11:17:11:26 | secretText | A broken or weak cryptographic algorithm (configured $@) depends on $@. | tst.js:5:19:5:49 | crypto. ... ', key) | here | tst.js:3:18:3:24 | trusted | sensitive data from an access to trusted | +| tst.js:11:17:11:26 | secretText | tst.js:11:17:11:26 | secretText | tst.js:11:17:11:26 | secretText | A broken or weak cryptographic algorithm (configured $@) depends on $@. | tst.js:5:19:5:49 | crypto. ... ', key) | here | tst.js:11:17:11:26 | secretText | sensitive data from an access to secretText | +| tst.js:17:17:17:25 | o.trusted | tst.js:17:17:17:25 | o.trusted | tst.js:17:17:17:25 | o.trusted | A broken or weak cryptographic algorithm (configured $@) depends on $@. | tst.js:5:19:5:49 | crypto. ... ', key) | here | tst.js:17:17:17:25 | o.trusted | sensitive data from an access to trusted | +| tst.js:22:21:22:30 | secretText | tst.js:3:18:3:24 | trusted | tst.js:22:21:22:30 | secretText | A broken or weak cryptographic algorithm (configured $@) depends on $@. | tst.js:21:22:21:60 | crypto. ... ', key) | here | tst.js:3:18:3:24 | trusted | sensitive data from an access to trusted | +| tst.js:22:21:22:30 | secretText | tst.js:22:21:22:30 | secretText | tst.js:22:21:22:30 | secretText | A broken or weak cryptographic algorithm (configured $@) depends on $@. | tst.js:21:22:21:60 | crypto. ... ', key) | here | tst.js:22:21:22:30 | secretText | sensitive data from an access to secretText | From f42bd28ca93aba663bdc3930bb0c372072b08ad0 Mon Sep 17 00:00:00 2001 From: Max Schaefer Date: Thu, 26 Oct 2023 15:06:45 +0100 Subject: [PATCH 004/122] Port changes to Ruby. --- .../codeql/ruby/frameworks/core/Digest.qll | 16 +++++--- .../codeql/ruby/internal/ConceptsShared.qll | 6 +++ ruby/ql/lib/codeql/ruby/security/OpenSSL.qll | 30 +++++++++------ .../security/cwe-327/BrokenCryptoAlgorithm.ql | 2 +- .../cwe-327/BrokenCryptoAlgorithm.expected | 38 +++++++++---------- 5 files changed, 55 insertions(+), 37 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/core/Digest.qll b/ruby/ql/lib/codeql/ruby/frameworks/core/Digest.qll index 895ab066d39..52df3feed04 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/core/Digest.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/core/Digest.qll @@ -18,15 +18,21 @@ private API::Node digest(Cryptography::HashingAlgorithm algo) { private class DigestCall extends Cryptography::CryptographicOperation::Range instanceof DataFlow::CallNode { Cryptography::HashingAlgorithm algo; + API::Node digestNode; DigestCall() { - this = digest(algo).getAMethodCall(["hexdigest", "base64digest", "bubblebabble"]) - or - this = digest(algo).getAMethodCall("file") // it's directly hashing the contents of a file, but that's close enough for us. - or - this = digest(algo).getInstance().getAMethodCall(["digest", "update", "<<"]) + digestNode = digest(algo) and + ( + this = digestNode.getAMethodCall(["hexdigest", "base64digest", "bubblebabble"]) + or + this = digestNode.getAMethodCall("file") // it's directly hashing the contents of a file, but that's close enough for us. + or + this = digestNode.getInstance().getAMethodCall(["digest", "update", "<<"]) + ) } + override DataFlow::Node getInitialization() { result = digestNode.asSource() } + override Cryptography::HashingAlgorithm getAlgorithm() { result = algo } override DataFlow::Node getAnInput() { result = super.getArgument(0) } diff --git a/ruby/ql/lib/codeql/ruby/internal/ConceptsShared.qll b/ruby/ql/lib/codeql/ruby/internal/ConceptsShared.qll index e86b156e204..135f830e47d 100644 --- a/ruby/ql/lib/codeql/ruby/internal/ConceptsShared.qll +++ b/ruby/ql/lib/codeql/ruby/internal/ConceptsShared.qll @@ -40,6 +40,9 @@ module Cryptography { /** Gets the algorithm used, if it matches a known `CryptographicAlgorithm`. */ CryptographicAlgorithm getAlgorithm() { result = super.getAlgorithm() } + /** Gets the data-flow node where the cryptographic algorithm used in this operation is configured. */ + DataFlow::Node getInitialization() { result = super.getInitialization() } + /** Gets an input the algorithm is used on, for example the plain text input to be encrypted. */ DataFlow::Node getAnInput() { result = super.getAnInput() } @@ -65,6 +68,9 @@ module Cryptography { * extend `CryptographicOperation` instead. */ abstract class Range extends DataFlow::Node { + /** Gets the data-flow node where the cryptographic algorithm used in this operation is configured. */ + abstract DataFlow::Node getInitialization(); + /** Gets the algorithm used, if it matches a known `CryptographicAlgorithm`. */ abstract CryptographicAlgorithm getAlgorithm(); diff --git a/ruby/ql/lib/codeql/ruby/security/OpenSSL.qll b/ruby/ql/lib/codeql/ruby/security/OpenSSL.qll index 637f7dab04a..cbabdc8782a 100644 --- a/ruby/ql/lib/codeql/ruby/security/OpenSSL.qll +++ b/ruby/ql/lib/codeql/ruby/security/OpenSSL.qll @@ -569,6 +569,8 @@ private class CipherOperation extends Cryptography::CryptographicOperation::Rang this.getMethodName() = "update" } + override DataFlow::Node getInitialization() { result = cipherNode } + override Cryptography::EncryptionAlgorithm getAlgorithm() { result = cipherNode.getCipher().getAlgorithm() } @@ -591,21 +593,21 @@ private module Digest { private class DigestCall extends Cryptography::CryptographicOperation::Range instanceof DataFlow::CallNode { Cryptography::HashingAlgorithm algo; + API::MethodAccessNode call; DigestCall() { - exists(API::MethodAccessNode call | - call = API::getTopLevelMember("OpenSSL").getMember("Digest").getMethod("new") - | - this = call.getReturn().getAMethodCall(["digest", "update", "<<"]) and - algo.matchesName(call.asCall() - .getArgument(0) - .asExpr() - .getExpr() - .getConstantValue() - .getString()) - ) + call = API::getTopLevelMember("OpenSSL").getMember("Digest").getMethod("new") and + this = call.getReturn().getAMethodCall(["digest", "update", "<<"]) and + algo.matchesName(call.asCall() + .getArgument(0) + .asExpr() + .getExpr() + .getConstantValue() + .getString()) } + override DataFlow::Node getInitialization() { result = call.asCall() } + override Cryptography::HashingAlgorithm getAlgorithm() { result = algo } override DataFlow::Node getAnInput() { result = super.getArgument(0) } @@ -617,12 +619,16 @@ private module Digest { private class DigestCallDirect extends Cryptography::CryptographicOperation::Range instanceof DataFlow::CallNode { Cryptography::HashingAlgorithm algo; + API::Node digestNode; DigestCallDirect() { - this = API::getTopLevelMember("OpenSSL").getMember("Digest").getMethod("digest").asCall() and + digestNode = API::getTopLevelMember("OpenSSL").getMember("Digest") and + this = digestNode.getMethod("digest").asCall() and algo.matchesName(this.getArgument(0).asExpr().getExpr().getConstantValue().getString()) } + override DataFlow::Node getInitialization() { result = digestNode.asSource() } + override Cryptography::HashingAlgorithm getAlgorithm() { result = algo } override DataFlow::Node getAnInput() { result = super.getArgument(1) } diff --git a/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.ql b/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.ql index b4082c669aa..ab2f1686aaf 100644 --- a/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.ql +++ b/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.ql @@ -23,4 +23,4 @@ where ) or operation.getBlockMode().isWeak() and msgPrefix = "The block mode " + operation.getBlockMode() -select operation, msgPrefix + " is broken or weak, and should not be used." +select operation, msgPrefix + " (configured $@) is broken or weak, and should not be used.", operation.getInitialization(), "here" diff --git a/ruby/ql/test/query-tests/security/cwe-327/BrokenCryptoAlgorithm.expected b/ruby/ql/test/query-tests/security/cwe-327/BrokenCryptoAlgorithm.expected index 62f621fd8c4..2737dc276b5 100644 --- a/ruby/ql/test/query-tests/security/cwe-327/BrokenCryptoAlgorithm.expected +++ b/ruby/ql/test/query-tests/security/cwe-327/BrokenCryptoAlgorithm.expected @@ -1,19 +1,19 @@ -| broken_crypto.rb:4:8:4:34 | call to new | The cryptographic algorithm DES is broken or weak, and should not be used. | -| broken_crypto.rb:8:1:8:18 | call to update | The cryptographic algorithm DES is broken or weak, and should not be used. | -| broken_crypto.rb:12:8:12:43 | call to new | The block mode ECB is broken or weak, and should not be used. | -| broken_crypto.rb:16:1:16:18 | call to update | The block mode ECB is broken or weak, and should not be used. | -| broken_crypto.rb:28:1:28:35 | call to new | The block mode ECB is broken or weak, and should not be used. | -| broken_crypto.rb:37:1:37:33 | call to new | The block mode ECB is broken or weak, and should not be used. | -| broken_crypto.rb:42:1:42:33 | call to new | The block mode ECB is broken or weak, and should not be used. | -| broken_crypto.rb:47:1:47:33 | call to new | The block mode ECB is broken or weak, and should not be used. | -| broken_crypto.rb:52:1:52:29 | call to new | The block mode ECB is broken or weak, and should not be used. | -| broken_crypto.rb:57:1:57:32 | call to new | The block mode ECB is broken or weak, and should not be used. | -| broken_crypto.rb:60:1:60:24 | call to new | The cryptographic algorithm DES is broken or weak, and should not be used. | -| broken_crypto.rb:62:1:62:30 | call to new | The cryptographic algorithm DES is broken or weak, and should not be used. | -| broken_crypto.rb:67:1:67:31 | call to new | The block mode ECB is broken or weak, and should not be used. | -| broken_crypto.rb:70:1:70:24 | call to new | The cryptographic algorithm RC2 is broken or weak, and should not be used. | -| broken_crypto.rb:72:1:72:30 | call to new | The block mode ECB is broken or weak, and should not be used. | -| broken_crypto.rb:72:1:72:30 | call to new | The cryptographic algorithm RC2 is broken or weak, and should not be used. | -| broken_crypto.rb:75:1:75:24 | call to new | The cryptographic algorithm RC4 is broken or weak, and should not be used. | -| broken_crypto.rb:77:1:77:29 | call to new | The cryptographic algorithm RC4 is broken or weak, and should not be used. | -| broken_crypto.rb:79:1:79:35 | call to new | The cryptographic algorithm RC4 is broken or weak, and should not be used. | +| broken_crypto.rb:4:8:4:34 | call to new | The cryptographic algorithm DES (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:4:8:4:34 | call to new | here | +| broken_crypto.rb:8:1:8:18 | call to update | The cryptographic algorithm DES (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:8:1:8:4 | weak | here | +| broken_crypto.rb:12:8:12:43 | call to new | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:12:8:12:43 | call to new | here | +| broken_crypto.rb:16:1:16:18 | call to update | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:16:1:16:4 | weak | here | +| broken_crypto.rb:28:1:28:35 | call to new | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:28:1:28:35 | call to new | here | +| broken_crypto.rb:37:1:37:33 | call to new | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:37:1:37:33 | call to new | here | +| broken_crypto.rb:42:1:42:33 | call to new | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:42:1:42:33 | call to new | here | +| broken_crypto.rb:47:1:47:33 | call to new | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:47:1:47:33 | call to new | here | +| broken_crypto.rb:52:1:52:29 | call to new | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:52:1:52:29 | call to new | here | +| broken_crypto.rb:57:1:57:32 | call to new | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:57:1:57:32 | call to new | here | +| broken_crypto.rb:60:1:60:24 | call to new | The cryptographic algorithm DES (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:60:1:60:24 | call to new | here | +| broken_crypto.rb:62:1:62:30 | call to new | The cryptographic algorithm DES (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:62:1:62:30 | call to new | here | +| broken_crypto.rb:67:1:67:31 | call to new | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:67:1:67:31 | call to new | here | +| broken_crypto.rb:70:1:70:24 | call to new | The cryptographic algorithm RC2 (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:70:1:70:24 | call to new | here | +| broken_crypto.rb:72:1:72:30 | call to new | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:72:1:72:30 | call to new | here | +| broken_crypto.rb:72:1:72:30 | call to new | The cryptographic algorithm RC2 (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:72:1:72:30 | call to new | here | +| broken_crypto.rb:75:1:75:24 | call to new | The cryptographic algorithm RC4 (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:75:1:75:24 | call to new | here | +| broken_crypto.rb:77:1:77:29 | call to new | The cryptographic algorithm RC4 (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:77:1:77:29 | call to new | here | +| broken_crypto.rb:79:1:79:35 | call to new | The cryptographic algorithm RC4 (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:79:1:79:35 | call to new | here | From 08cc8b8e80056b906b7b6cff9fd0ef6eb3009685 Mon Sep 17 00:00:00 2001 From: Max Schaefer Date: Thu, 26 Oct 2023 15:36:06 +0100 Subject: [PATCH 005/122] Autoformat. --- .../javascript/frameworks/CryptoLibraries.qll | 13 +++++++------ .../src/Security/CWE-327/BrokenCryptoAlgorithm.ql | 3 ++- .../security/cwe-327/BrokenCryptoAlgorithm.ql | 3 ++- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/frameworks/CryptoLibraries.qll b/javascript/ql/lib/semmle/javascript/frameworks/CryptoLibraries.qll index 556978a0c87..db527c03f95 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/CryptoLibraries.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/CryptoLibraries.qll @@ -353,7 +353,9 @@ private module CryptoJS { input = result.getParameter(0) } - private API::CallNode getDirectApplication(API::Node input, API::Node algorithmNode, CryptographicAlgorithm algorithm) { + private API::CallNode getDirectApplication( + API::Node input, API::Node algorithmNode, CryptographicAlgorithm algorithm + ) { /* * ``` * var CryptoJS = require("crypto-js"); @@ -367,6 +369,7 @@ private module CryptoJS { * An `Hmac`-prefix of is ignored. * Also matches where `CryptoJS.` has been replaced by `require("crypto-js/")` */ + algorithmNode = getAlgorithmNode(algorithm) and result = algorithmNode.getACall() and input = result.getParameter(0) @@ -407,7 +410,7 @@ private module CryptoJS { this = getEncryptionApplication(input, algorithmNode, algorithm) or this = getDirectApplication(input, algorithmNode, algorithm) - | + | instantiation = algorithmNode.asSource() ) or @@ -572,6 +575,7 @@ private module HashJs { * ``` * Also matches where `hash.()` has been replaced by a more specific require a la `require("hash.js/lib/hash/sha/512")` */ + init = getAlgorithmNode(algorithm) and this = init.getAMemberCall("update") and input = super.getArgument(0) @@ -762,10 +766,7 @@ private module Bcrypt { // `require("bcrypt").hash(password);` with minor naming variations algorithm.matchesName("BCRYPT") and init = API::moduleImport(["bcrypt", "bcryptjs", "bcrypt-nodejs"]) and - this = - init - .getMember(["hash", "hashSync"]) - .getACall() and + this = init.getMember(["hash", "hashSync"]).getACall() and super.getArgument(0) = input } diff --git a/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql b/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql index 611d595038b..7eb3093ca5c 100644 --- a/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql +++ b/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql @@ -23,4 +23,5 @@ where ) or operation.getBlockMode().isWeak() and msgPrefix = "The block mode " + operation.getBlockMode() -select operation, msgPrefix + " (configured $@) is broken or weak, and should not be used.", operation.getInitialization(), "here" +select operation, msgPrefix + " (configured $@) is broken or weak, and should not be used.", + operation.getInitialization(), "here" diff --git a/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.ql b/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.ql index ab2f1686aaf..714578d239f 100644 --- a/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.ql +++ b/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.ql @@ -23,4 +23,5 @@ where ) or operation.getBlockMode().isWeak() and msgPrefix = "The block mode " + operation.getBlockMode() -select operation, msgPrefix + " (configured $@) is broken or weak, and should not be used.", operation.getInitialization(), "here" +select operation, msgPrefix + " (configured $@) is broken or weak, and should not be used.", + operation.getInitialization(), "here" From 7af3d239ab3f51a7af87eff9bfc25510b2e38e89 Mon Sep 17 00:00:00 2001 From: Tony Torralba Date: Thu, 26 Oct 2023 16:46:19 +0200 Subject: [PATCH 006/122] Java: Add JMS sink to java/unsafe-deserialization --- .../java/security/UnsafeDeserializationQuery.qll | 4 ++++ .../Security/CWE/CWE-502/UnsafeDeserialization.qhelp | 12 +++++++++++- .../2023-10-26-jms-unsafe-deserialization.md | 4 ++++ .../security/CWE-502/ObjectMessageTest.java | 9 +++++++++ java/ql/test/query-tests/security/CWE-502/options | 2 +- 5 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 java/ql/src/change-notes/2023-10-26-jms-unsafe-deserialization.md create mode 100644 java/ql/test/query-tests/security/CWE-502/ObjectMessageTest.java diff --git a/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll b/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll index 1760ed259b0..d9d9694b853 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll @@ -224,6 +224,10 @@ predicate unsafeDeserialization(MethodCall ma, Expr sink) { m instanceof GsonDeserializeMethod and sink = ma.getArgument(0) and UnsafeTypeFlow::flowToExpr(ma.getArgument(1)) + or + m.getASourceOverriddenMethod*() + .hasQualifiedName(["javax", "jakarta"] + ".jms", "ObjectMessage", "getObject") and + sink = ma.getQualifier().getUnderlyingExpr() ) } diff --git a/java/ql/src/Security/CWE/CWE-502/UnsafeDeserialization.qhelp b/java/ql/src/Security/CWE/CWE-502/UnsafeDeserialization.qhelp index 6806527e442..087a873dfc7 100644 --- a/java/ql/src/Security/CWE/CWE-502/UnsafeDeserialization.qhelp +++ b/java/ql/src/Security/CWE/CWE-502/UnsafeDeserialization.qhelp @@ -15,7 +15,7 @@ may have unforeseen effects, such as the execution of arbitrary code.

There are many different serialization frameworks. This query currently supports Kryo, XmlDecoder, XStream, SnakeYaml, JYaml, JsonIO, YAMLBeans, HessianBurlap, Castor, Burlap, -Jackson, Jabsorb, Jodd JSON, Flexjson, Gson and Java IO serialization through +Jackson, Jabsorb, Jodd JSON, Flexjson, Gson, JMS, and Java IO serialization through ObjectInputStream/ObjectOutputStream.

@@ -74,6 +74,12 @@ Recommendations specific to particular frameworks supported by this query:
  • Recommendation: Do not use with untrusted user input.
  • +

    ObjectMesssage - Java EE/Jakarta EE

    +
      +
    • Secure by Default: Depends on the JMS implementation.
    • +
    • Recommendation: Do not use with untrusted user input.
    • +
    +

    @@ -158,6 +164,10 @@ RCE in Flexjson: Android Intent deserialization vulnerabilities with GSON parser: Insecure use of JSON parsers. +
  • +Research by Matthias Kaiser: +Pwning Your Java Messaging With Deserialization Vulnerabilities. +
  • diff --git a/java/ql/src/change-notes/2023-10-26-jms-unsafe-deserialization.md b/java/ql/src/change-notes/2023-10-26-jms-unsafe-deserialization.md new file mode 100644 index 00000000000..9ea3fbd866b --- /dev/null +++ b/java/ql/src/change-notes/2023-10-26-jms-unsafe-deserialization.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The query `java/unsafe-deserialization` has been improved to detect insecure calls to `ObjectMessage.getObject` in JMS. diff --git a/java/ql/test/query-tests/security/CWE-502/ObjectMessageTest.java b/java/ql/test/query-tests/security/CWE-502/ObjectMessageTest.java new file mode 100644 index 00000000000..15da41b93c8 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-502/ObjectMessageTest.java @@ -0,0 +1,9 @@ +import javax.jms.Message; +import javax.jms.MessageListener; +import javax.jms.ObjectMessage; + +public class ObjectMessageTest implements MessageListener { + public void onMessage(Message message) { + ((ObjectMessage) message).getObject(); // $ unsafeDeserialization + } +} diff --git a/java/ql/test/query-tests/security/CWE-502/options b/java/ql/test/query-tests/security/CWE-502/options index 47e25fe74fb..f15c0b92538 100644 --- a/java/ql/test/query-tests/security/CWE-502/options +++ b/java/ql/test/query-tests/security/CWE-502/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/snakeyaml-1.21:${testdir}/../../../stubs/xstream-1.4.10:${testdir}/../../../stubs/kryo-4.0.2:${testdir}/../../../stubs/jsr311-api-1.1.1:${testdir}/../../../stubs/fastjson-1.2.74:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/jyaml-1.3:${testdir}/../../../stubs/json-io-4.10.0:${testdir}/../../../stubs/yamlbeans-1.09:${testdir}/../../../stubs/hessian-4.0.38:${testdir}/../../../stubs/castor-1.4.1:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/jabsorb-1.3.2:${testdir}/../../../stubs/json-java-20210307:${testdir}/../../../stubs/joddjson-6.0.3:${testdir}/../../../stubs/flexjson-2.1:${testdir}/../../../stubs/gson-2.8.6:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/serialkiller-4.0.0 +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/snakeyaml-1.21:${testdir}/../../../stubs/xstream-1.4.10:${testdir}/../../../stubs/kryo-4.0.2:${testdir}/../../../stubs/jsr311-api-1.1.1:${testdir}/../../../stubs/fastjson-1.2.74:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/jyaml-1.3:${testdir}/../../../stubs/json-io-4.10.0:${testdir}/../../../stubs/yamlbeans-1.09:${testdir}/../../../stubs/hessian-4.0.38:${testdir}/../../../stubs/castor-1.4.1:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/jabsorb-1.3.2:${testdir}/../../../stubs/json-java-20210307:${testdir}/../../../stubs/joddjson-6.0.3:${testdir}/../../../stubs/flexjson-2.1:${testdir}/../../../stubs/gson-2.8.6:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/serialkiller-4.0.0:${testdir}/../../../stubs/jms-api-1 From 104700f6d30f0e640b2e6cf7203c8ec834bc09e5 Mon Sep 17 00:00:00 2001 From: Max Schaefer Date: Fri, 27 Oct 2023 10:09:47 +0100 Subject: [PATCH 007/122] Address review comment. --- .../Security/CWE-327/BrokenCryptoAlgorithm.ql | 6 +-- .../CWE-327/BrokenCryptoAlgorithm.expected | 10 ++--- .../Security/CWE-327/BrokenCryptoAlgorithm.ql | 4 +- .../BrokenCryptoAlgorithm.expected | 8 ++-- .../security/cwe-327/BrokenCryptoAlgorithm.ql | 4 +- .../cwe-327/BrokenCryptoAlgorithm.expected | 38 +++++++++---------- 6 files changed, 35 insertions(+), 35 deletions(-) diff --git a/javascript/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql b/javascript/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql index f580b2150ac..a4dd7ed6372 100644 --- a/javascript/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql +++ b/javascript/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql @@ -24,6 +24,6 @@ where sourceNode = source.getNode() and sinkNode = sink.getNode() and not sourceNode instanceof CleartextPasswordExpr // flagged by js/insufficient-password-hash -select sinkNode, source, sink, - "A broken or weak cryptographic algorithm (configured $@) depends on $@.", - sinkNode.getInitialization(), "here", sourceNode, "sensitive data from " + sourceNode.describe() +select sinkNode, source, sink, "$@ depends on $@.", sinkNode.getInitialization(), + "A broken or weak cryptographic algorithm", sourceNode, + "sensitive data from " + sourceNode.describe() diff --git a/javascript/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected b/javascript/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected index 8dfef853bda..3b87a7ccd9c 100644 --- a/javascript/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected +++ b/javascript/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected @@ -26,8 +26,8 @@ edges | tst.js:19:17:19:24 | password | tst.js:19:17:19:24 | password | | tst.js:22:21:22:30 | secretText | tst.js:22:21:22:30 | secretText | #select -| tst.js:11:17:11:26 | secretText | tst.js:3:18:3:24 | trusted | tst.js:11:17:11:26 | secretText | A broken or weak cryptographic algorithm (configured $@) depends on $@. | tst.js:5:19:5:49 | crypto. ... ', key) | here | tst.js:3:18:3:24 | trusted | sensitive data from an access to trusted | -| tst.js:11:17:11:26 | secretText | tst.js:11:17:11:26 | secretText | tst.js:11:17:11:26 | secretText | A broken or weak cryptographic algorithm (configured $@) depends on $@. | tst.js:5:19:5:49 | crypto. ... ', key) | here | tst.js:11:17:11:26 | secretText | sensitive data from an access to secretText | -| tst.js:17:17:17:25 | o.trusted | tst.js:17:17:17:25 | o.trusted | tst.js:17:17:17:25 | o.trusted | A broken or weak cryptographic algorithm (configured $@) depends on $@. | tst.js:5:19:5:49 | crypto. ... ', key) | here | tst.js:17:17:17:25 | o.trusted | sensitive data from an access to trusted | -| tst.js:22:21:22:30 | secretText | tst.js:3:18:3:24 | trusted | tst.js:22:21:22:30 | secretText | A broken or weak cryptographic algorithm (configured $@) depends on $@. | tst.js:21:22:21:60 | crypto. ... ', key) | here | tst.js:3:18:3:24 | trusted | sensitive data from an access to trusted | -| tst.js:22:21:22:30 | secretText | tst.js:22:21:22:30 | secretText | tst.js:22:21:22:30 | secretText | A broken or weak cryptographic algorithm (configured $@) depends on $@. | tst.js:21:22:21:60 | crypto. ... ', key) | here | tst.js:22:21:22:30 | secretText | sensitive data from an access to secretText | +| tst.js:11:17:11:26 | secretText | tst.js:3:18:3:24 | trusted | tst.js:11:17:11:26 | secretText | $@ depends on $@. | tst.js:5:19:5:49 | crypto. ... ', key) | A broken or weak cryptographic algorithm | tst.js:3:18:3:24 | trusted | sensitive data from an access to trusted | +| tst.js:11:17:11:26 | secretText | tst.js:11:17:11:26 | secretText | tst.js:11:17:11:26 | secretText | $@ depends on $@. | tst.js:5:19:5:49 | crypto. ... ', key) | A broken or weak cryptographic algorithm | tst.js:11:17:11:26 | secretText | sensitive data from an access to secretText | +| tst.js:17:17:17:25 | o.trusted | tst.js:17:17:17:25 | o.trusted | tst.js:17:17:17:25 | o.trusted | $@ depends on $@. | tst.js:5:19:5:49 | crypto. ... ', key) | A broken or weak cryptographic algorithm | tst.js:17:17:17:25 | o.trusted | sensitive data from an access to trusted | +| tst.js:22:21:22:30 | secretText | tst.js:3:18:3:24 | trusted | tst.js:22:21:22:30 | secretText | $@ depends on $@. | tst.js:21:22:21:60 | crypto. ... ', key) | A broken or weak cryptographic algorithm | tst.js:3:18:3:24 | trusted | sensitive data from an access to trusted | +| tst.js:22:21:22:30 | secretText | tst.js:22:21:22:30 | secretText | tst.js:22:21:22:30 | secretText | $@ depends on $@. | tst.js:21:22:21:60 | crypto. ... ', key) | A broken or weak cryptographic algorithm | tst.js:22:21:22:30 | secretText | sensitive data from an access to secretText | diff --git a/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql b/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql index 7eb3093ca5c..9da2124e882 100644 --- a/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql +++ b/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql @@ -23,5 +23,5 @@ where ) or operation.getBlockMode().isWeak() and msgPrefix = "The block mode " + operation.getBlockMode() -select operation, msgPrefix + " (configured $@) is broken or weak, and should not be used.", - operation.getInitialization(), "here" +select operation, "$@ is broken or weak, and should not be used.", operation.getInitialization(), + msgPrefix diff --git a/python/ql/test/query-tests/Security/CWE-327-BrokenCryptoAlgorithm/BrokenCryptoAlgorithm.expected b/python/ql/test/query-tests/Security/CWE-327-BrokenCryptoAlgorithm/BrokenCryptoAlgorithm.expected index 8283aa0b14f..43c6eeb0f77 100644 --- a/python/ql/test/query-tests/Security/CWE-327-BrokenCryptoAlgorithm/BrokenCryptoAlgorithm.expected +++ b/python/ql/test/query-tests/Security/CWE-327-BrokenCryptoAlgorithm/BrokenCryptoAlgorithm.expected @@ -1,4 +1,4 @@ -| test_cryptodome.py:11:13:11:42 | ControlFlowNode for Attribute() | The cryptographic algorithm ARC4 (configured $@) is broken or weak, and should not be used. | test_cryptodome.py:10:10:10:22 | ControlFlowNode for Attribute() | here | -| test_cryptodome.py:16:13:16:42 | ControlFlowNode for Attribute() | The block mode ECB (configured $@) is broken or weak, and should not be used. | test_cryptodome.py:15:10:15:35 | ControlFlowNode for Attribute() | here | -| test_cryptography.py:13:13:13:44 | ControlFlowNode for Attribute() | The cryptographic algorithm ARC4 (configured $@) is broken or weak, and should not be used. | test_cryptography.py:12:13:12:30 | ControlFlowNode for Attribute() | here | -| test_cryptography.py:22:13:22:58 | ControlFlowNode for Attribute() | The block mode ECB (configured $@) is broken or weak, and should not be used. | test_cryptography.py:21:13:21:30 | ControlFlowNode for Attribute() | here | +| test_cryptodome.py:11:13:11:42 | ControlFlowNode for Attribute() | $@ is broken or weak, and should not be used. | test_cryptodome.py:10:10:10:22 | ControlFlowNode for Attribute() | The cryptographic algorithm ARC4 | +| test_cryptodome.py:16:13:16:42 | ControlFlowNode for Attribute() | $@ is broken or weak, and should not be used. | test_cryptodome.py:15:10:15:35 | ControlFlowNode for Attribute() | The block mode ECB | +| test_cryptography.py:13:13:13:44 | ControlFlowNode for Attribute() | $@ is broken or weak, and should not be used. | test_cryptography.py:12:13:12:30 | ControlFlowNode for Attribute() | The cryptographic algorithm ARC4 | +| test_cryptography.py:22:13:22:58 | ControlFlowNode for Attribute() | $@ is broken or weak, and should not be used. | test_cryptography.py:21:13:21:30 | ControlFlowNode for Attribute() | The block mode ECB | diff --git a/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.ql b/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.ql index 714578d239f..b8e6400dd42 100644 --- a/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.ql +++ b/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.ql @@ -23,5 +23,5 @@ where ) or operation.getBlockMode().isWeak() and msgPrefix = "The block mode " + operation.getBlockMode() -select operation, msgPrefix + " (configured $@) is broken or weak, and should not be used.", - operation.getInitialization(), "here" +select operation, "$@ is broken or weak, and should not be used.", operation.getInitialization(), + msgPrefix diff --git a/ruby/ql/test/query-tests/security/cwe-327/BrokenCryptoAlgorithm.expected b/ruby/ql/test/query-tests/security/cwe-327/BrokenCryptoAlgorithm.expected index 2737dc276b5..fc7b5b1ba67 100644 --- a/ruby/ql/test/query-tests/security/cwe-327/BrokenCryptoAlgorithm.expected +++ b/ruby/ql/test/query-tests/security/cwe-327/BrokenCryptoAlgorithm.expected @@ -1,19 +1,19 @@ -| broken_crypto.rb:4:8:4:34 | call to new | The cryptographic algorithm DES (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:4:8:4:34 | call to new | here | -| broken_crypto.rb:8:1:8:18 | call to update | The cryptographic algorithm DES (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:8:1:8:4 | weak | here | -| broken_crypto.rb:12:8:12:43 | call to new | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:12:8:12:43 | call to new | here | -| broken_crypto.rb:16:1:16:18 | call to update | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:16:1:16:4 | weak | here | -| broken_crypto.rb:28:1:28:35 | call to new | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:28:1:28:35 | call to new | here | -| broken_crypto.rb:37:1:37:33 | call to new | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:37:1:37:33 | call to new | here | -| broken_crypto.rb:42:1:42:33 | call to new | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:42:1:42:33 | call to new | here | -| broken_crypto.rb:47:1:47:33 | call to new | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:47:1:47:33 | call to new | here | -| broken_crypto.rb:52:1:52:29 | call to new | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:52:1:52:29 | call to new | here | -| broken_crypto.rb:57:1:57:32 | call to new | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:57:1:57:32 | call to new | here | -| broken_crypto.rb:60:1:60:24 | call to new | The cryptographic algorithm DES (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:60:1:60:24 | call to new | here | -| broken_crypto.rb:62:1:62:30 | call to new | The cryptographic algorithm DES (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:62:1:62:30 | call to new | here | -| broken_crypto.rb:67:1:67:31 | call to new | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:67:1:67:31 | call to new | here | -| broken_crypto.rb:70:1:70:24 | call to new | The cryptographic algorithm RC2 (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:70:1:70:24 | call to new | here | -| broken_crypto.rb:72:1:72:30 | call to new | The block mode ECB (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:72:1:72:30 | call to new | here | -| broken_crypto.rb:72:1:72:30 | call to new | The cryptographic algorithm RC2 (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:72:1:72:30 | call to new | here | -| broken_crypto.rb:75:1:75:24 | call to new | The cryptographic algorithm RC4 (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:75:1:75:24 | call to new | here | -| broken_crypto.rb:77:1:77:29 | call to new | The cryptographic algorithm RC4 (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:77:1:77:29 | call to new | here | -| broken_crypto.rb:79:1:79:35 | call to new | The cryptographic algorithm RC4 (configured $@) is broken or weak, and should not be used. | broken_crypto.rb:79:1:79:35 | call to new | here | +| broken_crypto.rb:4:8:4:34 | call to new | $@ is broken or weak, and should not be used. | broken_crypto.rb:4:8:4:34 | call to new | The cryptographic algorithm DES | +| broken_crypto.rb:8:1:8:18 | call to update | $@ is broken or weak, and should not be used. | broken_crypto.rb:8:1:8:4 | weak | The cryptographic algorithm DES | +| broken_crypto.rb:12:8:12:43 | call to new | $@ is broken or weak, and should not be used. | broken_crypto.rb:12:8:12:43 | call to new | The block mode ECB | +| broken_crypto.rb:16:1:16:18 | call to update | $@ is broken or weak, and should not be used. | broken_crypto.rb:16:1:16:4 | weak | The block mode ECB | +| broken_crypto.rb:28:1:28:35 | call to new | $@ is broken or weak, and should not be used. | broken_crypto.rb:28:1:28:35 | call to new | The block mode ECB | +| broken_crypto.rb:37:1:37:33 | call to new | $@ is broken or weak, and should not be used. | broken_crypto.rb:37:1:37:33 | call to new | The block mode ECB | +| broken_crypto.rb:42:1:42:33 | call to new | $@ is broken or weak, and should not be used. | broken_crypto.rb:42:1:42:33 | call to new | The block mode ECB | +| broken_crypto.rb:47:1:47:33 | call to new | $@ is broken or weak, and should not be used. | broken_crypto.rb:47:1:47:33 | call to new | The block mode ECB | +| broken_crypto.rb:52:1:52:29 | call to new | $@ is broken or weak, and should not be used. | broken_crypto.rb:52:1:52:29 | call to new | The block mode ECB | +| broken_crypto.rb:57:1:57:32 | call to new | $@ is broken or weak, and should not be used. | broken_crypto.rb:57:1:57:32 | call to new | The block mode ECB | +| broken_crypto.rb:60:1:60:24 | call to new | $@ is broken or weak, and should not be used. | broken_crypto.rb:60:1:60:24 | call to new | The cryptographic algorithm DES | +| broken_crypto.rb:62:1:62:30 | call to new | $@ is broken or weak, and should not be used. | broken_crypto.rb:62:1:62:30 | call to new | The cryptographic algorithm DES | +| broken_crypto.rb:67:1:67:31 | call to new | $@ is broken or weak, and should not be used. | broken_crypto.rb:67:1:67:31 | call to new | The block mode ECB | +| broken_crypto.rb:70:1:70:24 | call to new | $@ is broken or weak, and should not be used. | broken_crypto.rb:70:1:70:24 | call to new | The cryptographic algorithm RC2 | +| broken_crypto.rb:72:1:72:30 | call to new | $@ is broken or weak, and should not be used. | broken_crypto.rb:72:1:72:30 | call to new | The block mode ECB | +| broken_crypto.rb:72:1:72:30 | call to new | $@ is broken or weak, and should not be used. | broken_crypto.rb:72:1:72:30 | call to new | The cryptographic algorithm RC2 | +| broken_crypto.rb:75:1:75:24 | call to new | $@ is broken or weak, and should not be used. | broken_crypto.rb:75:1:75:24 | call to new | The cryptographic algorithm RC4 | +| broken_crypto.rb:77:1:77:29 | call to new | $@ is broken or weak, and should not be used. | broken_crypto.rb:77:1:77:29 | call to new | The cryptographic algorithm RC4 | +| broken_crypto.rb:79:1:79:35 | call to new | $@ is broken or weak, and should not be used. | broken_crypto.rb:79:1:79:35 | call to new | The cryptographic algorithm RC4 | From 45cf50c2af259b177f43971b1b2af188adf89883 Mon Sep 17 00:00:00 2001 From: Tony Torralba Date: Mon, 30 Oct 2023 10:28:17 +0100 Subject: [PATCH 008/122] Apply JMS sink only when there isn't an implementation available --- java/ql/lib/semmle/code/java/frameworks/Jms.qll | 10 ++++++++++ .../code/java/security/UnsafeDeserializationQuery.qll | 9 ++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 java/ql/lib/semmle/code/java/frameworks/Jms.qll diff --git a/java/ql/lib/semmle/code/java/frameworks/Jms.qll b/java/ql/lib/semmle/code/java/frameworks/Jms.qll new file mode 100644 index 00000000000..653582100bd --- /dev/null +++ b/java/ql/lib/semmle/code/java/frameworks/Jms.qll @@ -0,0 +1,10 @@ +/** Provides definitions for working with the JMS library. */ + +import java + +/** The method `ObjectMessage.getObject`. */ +class ObjectMessageGetObjectMethod extends Method { + ObjectMessageGetObjectMethod() { + this.hasQualifiedName(["javax", "jakarta"] + ".jms", "ObjectMessage", "getObject") + } +} diff --git a/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll b/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll index d9d9694b853..272c483f7a2 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll @@ -4,6 +4,7 @@ import semmle.code.java.dataflow.FlowSources private import semmle.code.java.dataflow.TaintTracking2 +private import semmle.code.java.dispatch.VirtualDispatch private import semmle.code.java.frameworks.Kryo private import semmle.code.java.frameworks.XStream private import semmle.code.java.frameworks.SnakeYaml @@ -15,6 +16,7 @@ private import semmle.code.java.frameworks.HessianBurlap private import semmle.code.java.frameworks.Castor private import semmle.code.java.frameworks.Jackson private import semmle.code.java.frameworks.Jabsorb +private import semmle.code.java.frameworks.Jms private import semmle.code.java.frameworks.JoddJson private import semmle.code.java.frameworks.Flexjson private import semmle.code.java.frameworks.google.Gson @@ -225,9 +227,10 @@ predicate unsafeDeserialization(MethodCall ma, Expr sink) { sink = ma.getArgument(0) and UnsafeTypeFlow::flowToExpr(ma.getArgument(1)) or - m.getASourceOverriddenMethod*() - .hasQualifiedName(["javax", "jakarta"] + ".jms", "ObjectMessage", "getObject") and - sink = ma.getQualifier().getUnderlyingExpr() + m.getASourceOverriddenMethod*() instanceof ObjectMessageGetObjectMethod and + sink = ma.getQualifier().getUnderlyingExpr() and + // If we can see an implementation, we trust dataflow to find a path to the other sinks instead + not exists(viableCallable(ma)) ) } From c82eb4dff3eccdd628721cbb4e1a229139a9adfe Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 31 Oct 2023 17:15:01 +0000 Subject: [PATCH 009/122] Swift: Test spacing. --- .../CWE-078/CommandInjection.expected | 378 +++++++++--------- .../Security/CWE-078/CommandInjection.swift | 2 + 2 files changed, 191 insertions(+), 189 deletions(-) diff --git a/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected b/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected index 1017c5487a1..2ef29646037 100644 --- a/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected +++ b/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected @@ -33,34 +33,34 @@ edges | CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:114:36:114:36 | userControlledString | | CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:115:28:115:28 | userControlledString | | CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:119:45:119:45 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:120:28:120:36 | ... .+(_:_:) ... | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:124:46:124:46 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:125:22:125:22 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:132:24:132:24 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:142:42:142:42 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:143:75:143:75 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:146:35:146:35 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:147:70:147:70 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:152:53:152:53 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:155:52:155:52 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:156:33:156:33 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:158:57:158:57 | userControlledString | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:121:28:121:36 | ... .+(_:_:) ... | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:125:46:125:46 | userControlledString | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:126:22:126:22 | userControlledString | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:134:24:134:24 | userControlledString | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:144:42:144:42 | userControlledString | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:145:75:145:75 | userControlledString | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:148:35:148:35 | userControlledString | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:149:70:149:70 | userControlledString | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:154:53:154:53 | userControlledString | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:157:52:157:52 | userControlledString | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:158:33:158:33 | userControlledString | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:160:57:160:57 | userControlledString | | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) [some:0] | | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:114:36:114:36 | userControlledString | | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:115:28:115:28 | userControlledString | | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:119:45:119:45 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:120:28:120:36 | ... .+(_:_:) ... | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:124:46:124:46 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:125:22:125:22 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:132:24:132:24 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:142:42:142:42 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:143:75:143:75 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:146:35:146:35 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:147:70:147:70 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:152:53:152:53 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:155:52:155:52 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:156:33:156:33 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:158:57:158:57 | userControlledString | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:121:28:121:36 | ... .+(_:_:) ... | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:125:46:125:46 | userControlledString | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:126:22:126:22 | userControlledString | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:134:24:134:24 | userControlledString | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:144:42:144:42 | userControlledString | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:145:75:145:75 | userControlledString | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:148:35:148:35 | userControlledString | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:149:70:149:70 | userControlledString | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:154:53:154:53 | userControlledString | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:157:52:157:52 | userControlledString | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:158:33:158:33 | userControlledString | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:160:57:160:57 | userControlledString | | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) [some:0] | CommandInjection.swift:99:8:99:12 | let ...? [some:0] | | CommandInjection.swift:114:2:114:2 | [post] task3 [executableURL] | CommandInjection.swift:114:2:114:2 | [post] task3 | | CommandInjection.swift:114:24:114:56 | call to URL.init(string:) [some:0] | CommandInjection.swift:114:24:114:57 | ...! | @@ -72,82 +72,82 @@ edges | CommandInjection.swift:119:2:119:2 | [post] task4 [executableURL] | CommandInjection.swift:119:2:119:2 | [post] task4 | | CommandInjection.swift:119:24:119:65 | call to URL.init(fileURLWithPath:) | CommandInjection.swift:119:2:119:2 | [post] task4 [executableURL] | | CommandInjection.swift:119:45:119:45 | userControlledString | CommandInjection.swift:119:24:119:65 | call to URL.init(fileURLWithPath:) | -| CommandInjection.swift:120:2:120:2 | [post] task4 [arguments, Collection element] | CommandInjection.swift:120:2:120:2 | [post] task4 | -| CommandInjection.swift:120:20:120:56 | [...] [Collection element] | CommandInjection.swift:120:2:120:2 | [post] task4 [arguments, Collection element] | -| CommandInjection.swift:120:28:120:36 | ... .+(_:_:) ... | CommandInjection.swift:120:20:120:56 | [...] [Collection element] | -| CommandInjection.swift:124:2:124:7 | [post] ...? [executableURL] | CommandInjection.swift:124:2:124:7 | [post] ...? | -| CommandInjection.swift:124:25:124:66 | call to URL.init(fileURLWithPath:) | CommandInjection.swift:124:2:124:7 | [post] ...? [executableURL] | -| CommandInjection.swift:124:46:124:46 | userControlledString | CommandInjection.swift:124:25:124:66 | call to URL.init(fileURLWithPath:) | -| CommandInjection.swift:125:2:125:7 | [post] ...? [arguments, Collection element] | CommandInjection.swift:125:2:125:7 | [post] ...? | -| CommandInjection.swift:125:21:125:42 | [...] [Collection element] | CommandInjection.swift:125:2:125:7 | [post] ...? [arguments, Collection element] | -| CommandInjection.swift:125:22:125:22 | userControlledString | CommandInjection.swift:125:21:125:42 | [...] [Collection element] | -| CommandInjection.swift:132:24:132:24 | userControlledString | CommandInjection.swift:142:42:142:42 | userControlledString | -| CommandInjection.swift:132:24:132:24 | userControlledString | CommandInjection.swift:143:75:143:75 | userControlledString | -| CommandInjection.swift:132:24:132:24 | userControlledString | CommandInjection.swift:146:35:146:35 | userControlledString | -| CommandInjection.swift:132:24:132:24 | userControlledString | CommandInjection.swift:147:70:147:70 | userControlledString | -| CommandInjection.swift:132:24:132:24 | userControlledString | CommandInjection.swift:152:53:152:53 | userControlledString | -| CommandInjection.swift:132:24:132:24 | userControlledString | CommandInjection.swift:155:52:155:52 | userControlledString | -| CommandInjection.swift:132:24:132:24 | userControlledString | CommandInjection.swift:156:33:156:33 | userControlledString | -| CommandInjection.swift:132:24:132:24 | userControlledString | CommandInjection.swift:158:57:158:57 | userControlledString | -| CommandInjection.swift:143:67:143:95 | [...] [Collection element] | CommandInjection.swift:143:67:143:95 | [...] | -| CommandInjection.swift:143:75:143:75 | userControlledString | CommandInjection.swift:143:67:143:95 | [...] [Collection element] | -| CommandInjection.swift:146:23:146:55 | call to URL.init(string:) [some:0] | CommandInjection.swift:146:23:146:56 | ...! | -| CommandInjection.swift:146:35:146:35 | userControlledString | CommandInjection.swift:146:23:146:55 | call to URL.init(string:) [some:0] | -| CommandInjection.swift:147:62:147:90 | [...] [Collection element] | CommandInjection.swift:147:62:147:90 | [...] | -| CommandInjection.swift:147:70:147:70 | userControlledString | CommandInjection.swift:147:62:147:90 | [...] [Collection element] | -| CommandInjection.swift:152:41:152:73 | call to URL.init(string:) [some:0] | CommandInjection.swift:152:41:152:74 | ...! | -| CommandInjection.swift:152:53:152:53 | userControlledString | CommandInjection.swift:152:41:152:73 | call to URL.init(string:) [some:0] | -| CommandInjection.swift:155:40:155:72 | call to URL.init(string:) [some:0] | CommandInjection.swift:155:40:155:73 | ...! | -| CommandInjection.swift:155:40:155:72 | call to URL.init(string:) [some:0] | CommandInjection.swift:155:40:155:73 | ...! | -| CommandInjection.swift:155:40:155:73 | ...! | file://:0:0:0:0 | url | -| CommandInjection.swift:155:52:155:52 | userControlledString | CommandInjection.swift:155:40:155:72 | call to URL.init(string:) [some:0] | -| CommandInjection.swift:156:32:156:53 | [...] [Collection element] | CommandInjection.swift:156:32:156:53 | [...] | -| CommandInjection.swift:156:33:156:33 | userControlledString | CommandInjection.swift:156:32:156:53 | [...] [Collection element] | -| CommandInjection.swift:158:45:158:77 | call to URL.init(string:) [some:0] | CommandInjection.swift:158:45:158:78 | ...! | -| CommandInjection.swift:158:45:158:77 | call to URL.init(string:) [some:0] | CommandInjection.swift:158:45:158:78 | ...! | -| CommandInjection.swift:158:45:158:78 | ...! | file://:0:0:0:0 | url | -| CommandInjection.swift:158:57:158:57 | userControlledString | CommandInjection.swift:158:45:158:77 | call to URL.init(string:) [some:0] | -| CommandInjection.swift:172:3:172:3 | newValue [Collection element] | CommandInjection.swift:173:19:173:19 | newValue [Collection element] | -| CommandInjection.swift:172:3:172:3 | newValue [Collection element] | CommandInjection.swift:174:20:174:20 | newValue [Collection element] | -| CommandInjection.swift:172:3:172:3 | newValue [Collection element] | CommandInjection.swift:175:19:175:19 | newValue [Collection element] | -| CommandInjection.swift:173:4:173:4 | [post] getter for .p1 [arguments, Collection element] | CommandInjection.swift:173:4:173:4 | [post] getter for .p1 | -| CommandInjection.swift:173:19:173:19 | newValue [Collection element] | CommandInjection.swift:173:4:173:4 | [post] getter for .p1 [arguments, Collection element] | -| CommandInjection.swift:174:4:174:6 | [post] ...! [arguments, Collection element] | CommandInjection.swift:174:4:174:6 | [post] ...! | -| CommandInjection.swift:174:20:174:20 | newValue [Collection element] | CommandInjection.swift:174:4:174:6 | [post] ...! [arguments, Collection element] | -| CommandInjection.swift:175:4:175:4 | [post] ...! [arguments, Collection element] | CommandInjection.swift:175:4:175:4 | [post] ...! | -| CommandInjection.swift:175:19:175:19 | newValue [Collection element] | CommandInjection.swift:175:4:175:4 | [post] ...! [arguments, Collection element] | -| CommandInjection.swift:180:9:180:13 | let ...? [some:0] | CommandInjection.swift:180:13:180:13 | userControlledString | -| CommandInjection.swift:180:13:180:13 | userControlledString | CommandInjection.swift:184:19:184:19 | userControlledString | -| CommandInjection.swift:180:13:180:13 | userControlledString | CommandInjection.swift:190:31:190:31 | userControlledString | -| CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) [some:0] | -| CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | CommandInjection.swift:184:19:184:19 | userControlledString | -| CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | CommandInjection.swift:190:31:190:31 | userControlledString | -| CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) [some:0] | CommandInjection.swift:180:9:180:13 | let ...? [some:0] | -| CommandInjection.swift:184:18:184:39 | [...] [Collection element] | CommandInjection.swift:186:18:186:18 | tainted1 [Collection element] | -| CommandInjection.swift:184:18:184:39 | [...] [Collection element] | CommandInjection.swift:187:19:187:19 | tainted1 [Collection element] | -| CommandInjection.swift:184:18:184:39 | [...] [Collection element] | CommandInjection.swift:188:18:188:18 | tainted1 [Collection element] | -| CommandInjection.swift:184:19:184:19 | userControlledString | CommandInjection.swift:184:18:184:39 | [...] [Collection element] | -| CommandInjection.swift:186:3:186:3 | [post] getter for .p1 [arguments, Collection element] | CommandInjection.swift:186:3:186:3 | [post] getter for .p1 | -| CommandInjection.swift:186:18:186:18 | tainted1 [Collection element] | CommandInjection.swift:186:3:186:3 | [post] getter for .p1 [arguments, Collection element] | -| CommandInjection.swift:186:18:186:18 | tainted1 [Collection element] | CommandInjection.swift:187:19:187:19 | tainted1 [Collection element] | -| CommandInjection.swift:186:18:186:18 | tainted1 [Collection element] | CommandInjection.swift:188:18:188:18 | tainted1 [Collection element] | -| CommandInjection.swift:187:3:187:5 | [post] ...! [arguments, Collection element] | CommandInjection.swift:187:3:187:5 | [post] ...! | -| CommandInjection.swift:187:19:187:19 | tainted1 [Collection element] | CommandInjection.swift:187:3:187:5 | [post] ...! [arguments, Collection element] | -| CommandInjection.swift:187:19:187:19 | tainted1 [Collection element] | CommandInjection.swift:188:18:188:18 | tainted1 [Collection element] | -| CommandInjection.swift:188:3:188:3 | [post] ...! [arguments, Collection element] | CommandInjection.swift:188:3:188:3 | [post] ...! | -| CommandInjection.swift:188:18:188:18 | tainted1 [Collection element] | CommandInjection.swift:188:3:188:3 | [post] ...! [arguments, Collection element] | -| CommandInjection.swift:190:30:190:51 | [...] [Collection element] | CommandInjection.swift:192:18:192:18 | tainted2 [Collection element] | -| CommandInjection.swift:190:30:190:51 | [...] [Collection element] | CommandInjection.swift:193:19:193:19 | tainted2 [Collection element] | -| CommandInjection.swift:190:30:190:51 | [...] [Collection element] | CommandInjection.swift:194:18:194:18 | tainted2 [Collection element] | -| CommandInjection.swift:190:30:190:51 | [...] [Collection element] | CommandInjection.swift:196:13:196:13 | tainted2 [Collection element] | -| CommandInjection.swift:190:31:190:31 | userControlledString | CommandInjection.swift:190:30:190:51 | [...] [Collection element] | -| CommandInjection.swift:192:3:192:3 | [post] getter for .p1 [arguments, Collection element] | CommandInjection.swift:192:3:192:3 | [post] getter for .p1 | -| CommandInjection.swift:192:18:192:18 | tainted2 [Collection element] | CommandInjection.swift:192:3:192:3 | [post] getter for .p1 [arguments, Collection element] | -| CommandInjection.swift:193:3:193:5 | [post] ...! [arguments, Collection element] | CommandInjection.swift:193:3:193:5 | [post] ...! | -| CommandInjection.swift:193:19:193:19 | tainted2 [Collection element] | CommandInjection.swift:193:3:193:5 | [post] ...! [arguments, Collection element] | -| CommandInjection.swift:194:3:194:3 | [post] ...! [arguments, Collection element] | CommandInjection.swift:194:3:194:3 | [post] ...! | -| CommandInjection.swift:194:18:194:18 | tainted2 [Collection element] | CommandInjection.swift:194:3:194:3 | [post] ...! [arguments, Collection element] | -| CommandInjection.swift:196:13:196:13 | tainted2 [Collection element] | CommandInjection.swift:172:3:172:3 | newValue [Collection element] | +| CommandInjection.swift:121:2:121:2 | [post] task4 [arguments, Collection element] | CommandInjection.swift:121:2:121:2 | [post] task4 | +| CommandInjection.swift:121:20:121:56 | [...] [Collection element] | CommandInjection.swift:121:2:121:2 | [post] task4 [arguments, Collection element] | +| CommandInjection.swift:121:28:121:36 | ... .+(_:_:) ... | CommandInjection.swift:121:20:121:56 | [...] [Collection element] | +| CommandInjection.swift:125:2:125:7 | [post] ...? [executableURL] | CommandInjection.swift:125:2:125:7 | [post] ...? | +| CommandInjection.swift:125:25:125:66 | call to URL.init(fileURLWithPath:) | CommandInjection.swift:125:2:125:7 | [post] ...? [executableURL] | +| CommandInjection.swift:125:46:125:46 | userControlledString | CommandInjection.swift:125:25:125:66 | call to URL.init(fileURLWithPath:) | +| CommandInjection.swift:126:2:126:7 | [post] ...? [arguments, Collection element] | CommandInjection.swift:126:2:126:7 | [post] ...? | +| CommandInjection.swift:126:21:126:42 | [...] [Collection element] | CommandInjection.swift:126:2:126:7 | [post] ...? [arguments, Collection element] | +| CommandInjection.swift:126:22:126:22 | userControlledString | CommandInjection.swift:126:21:126:42 | [...] [Collection element] | +| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:144:42:144:42 | userControlledString | +| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:145:75:145:75 | userControlledString | +| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:148:35:148:35 | userControlledString | +| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:149:70:149:70 | userControlledString | +| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:154:53:154:53 | userControlledString | +| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:157:52:157:52 | userControlledString | +| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:158:33:158:33 | userControlledString | +| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:160:57:160:57 | userControlledString | +| CommandInjection.swift:145:67:145:95 | [...] [Collection element] | CommandInjection.swift:145:67:145:95 | [...] | +| CommandInjection.swift:145:75:145:75 | userControlledString | CommandInjection.swift:145:67:145:95 | [...] [Collection element] | +| CommandInjection.swift:148:23:148:55 | call to URL.init(string:) [some:0] | CommandInjection.swift:148:23:148:56 | ...! | +| CommandInjection.swift:148:35:148:35 | userControlledString | CommandInjection.swift:148:23:148:55 | call to URL.init(string:) [some:0] | +| CommandInjection.swift:149:62:149:90 | [...] [Collection element] | CommandInjection.swift:149:62:149:90 | [...] | +| CommandInjection.swift:149:70:149:70 | userControlledString | CommandInjection.swift:149:62:149:90 | [...] [Collection element] | +| CommandInjection.swift:154:41:154:73 | call to URL.init(string:) [some:0] | CommandInjection.swift:154:41:154:74 | ...! | +| CommandInjection.swift:154:53:154:53 | userControlledString | CommandInjection.swift:154:41:154:73 | call to URL.init(string:) [some:0] | +| CommandInjection.swift:157:40:157:72 | call to URL.init(string:) [some:0] | CommandInjection.swift:157:40:157:73 | ...! | +| CommandInjection.swift:157:40:157:72 | call to URL.init(string:) [some:0] | CommandInjection.swift:157:40:157:73 | ...! | +| CommandInjection.swift:157:40:157:73 | ...! | file://:0:0:0:0 | url | +| CommandInjection.swift:157:52:157:52 | userControlledString | CommandInjection.swift:157:40:157:72 | call to URL.init(string:) [some:0] | +| CommandInjection.swift:158:32:158:53 | [...] [Collection element] | CommandInjection.swift:158:32:158:53 | [...] | +| CommandInjection.swift:158:33:158:33 | userControlledString | CommandInjection.swift:158:32:158:53 | [...] [Collection element] | +| CommandInjection.swift:160:45:160:77 | call to URL.init(string:) [some:0] | CommandInjection.swift:160:45:160:78 | ...! | +| CommandInjection.swift:160:45:160:77 | call to URL.init(string:) [some:0] | CommandInjection.swift:160:45:160:78 | ...! | +| CommandInjection.swift:160:45:160:78 | ...! | file://:0:0:0:0 | url | +| CommandInjection.swift:160:57:160:57 | userControlledString | CommandInjection.swift:160:45:160:77 | call to URL.init(string:) [some:0] | +| CommandInjection.swift:174:3:174:3 | newValue [Collection element] | CommandInjection.swift:175:19:175:19 | newValue [Collection element] | +| CommandInjection.swift:174:3:174:3 | newValue [Collection element] | CommandInjection.swift:176:20:176:20 | newValue [Collection element] | +| CommandInjection.swift:174:3:174:3 | newValue [Collection element] | CommandInjection.swift:177:19:177:19 | newValue [Collection element] | +| CommandInjection.swift:175:4:175:4 | [post] getter for .p1 [arguments, Collection element] | CommandInjection.swift:175:4:175:4 | [post] getter for .p1 | +| CommandInjection.swift:175:19:175:19 | newValue [Collection element] | CommandInjection.swift:175:4:175:4 | [post] getter for .p1 [arguments, Collection element] | +| CommandInjection.swift:176:4:176:6 | [post] ...! [arguments, Collection element] | CommandInjection.swift:176:4:176:6 | [post] ...! | +| CommandInjection.swift:176:20:176:20 | newValue [Collection element] | CommandInjection.swift:176:4:176:6 | [post] ...! [arguments, Collection element] | +| CommandInjection.swift:177:4:177:4 | [post] ...! [arguments, Collection element] | CommandInjection.swift:177:4:177:4 | [post] ...! | +| CommandInjection.swift:177:19:177:19 | newValue [Collection element] | CommandInjection.swift:177:4:177:4 | [post] ...! [arguments, Collection element] | +| CommandInjection.swift:182:9:182:13 | let ...? [some:0] | CommandInjection.swift:182:13:182:13 | userControlledString | +| CommandInjection.swift:182:13:182:13 | userControlledString | CommandInjection.swift:186:19:186:19 | userControlledString | +| CommandInjection.swift:182:13:182:13 | userControlledString | CommandInjection.swift:192:31:192:31 | userControlledString | +| CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) [some:0] | +| CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | CommandInjection.swift:186:19:186:19 | userControlledString | +| CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | CommandInjection.swift:192:31:192:31 | userControlledString | +| CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) [some:0] | CommandInjection.swift:182:9:182:13 | let ...? [some:0] | +| CommandInjection.swift:186:18:186:39 | [...] [Collection element] | CommandInjection.swift:188:18:188:18 | tainted1 [Collection element] | +| CommandInjection.swift:186:18:186:39 | [...] [Collection element] | CommandInjection.swift:189:19:189:19 | tainted1 [Collection element] | +| CommandInjection.swift:186:18:186:39 | [...] [Collection element] | CommandInjection.swift:190:18:190:18 | tainted1 [Collection element] | +| CommandInjection.swift:186:19:186:19 | userControlledString | CommandInjection.swift:186:18:186:39 | [...] [Collection element] | +| CommandInjection.swift:188:3:188:3 | [post] getter for .p1 [arguments, Collection element] | CommandInjection.swift:188:3:188:3 | [post] getter for .p1 | +| CommandInjection.swift:188:18:188:18 | tainted1 [Collection element] | CommandInjection.swift:188:3:188:3 | [post] getter for .p1 [arguments, Collection element] | +| CommandInjection.swift:188:18:188:18 | tainted1 [Collection element] | CommandInjection.swift:189:19:189:19 | tainted1 [Collection element] | +| CommandInjection.swift:188:18:188:18 | tainted1 [Collection element] | CommandInjection.swift:190:18:190:18 | tainted1 [Collection element] | +| CommandInjection.swift:189:3:189:5 | [post] ...! [arguments, Collection element] | CommandInjection.swift:189:3:189:5 | [post] ...! | +| CommandInjection.swift:189:19:189:19 | tainted1 [Collection element] | CommandInjection.swift:189:3:189:5 | [post] ...! [arguments, Collection element] | +| CommandInjection.swift:189:19:189:19 | tainted1 [Collection element] | CommandInjection.swift:190:18:190:18 | tainted1 [Collection element] | +| CommandInjection.swift:190:3:190:3 | [post] ...! [arguments, Collection element] | CommandInjection.swift:190:3:190:3 | [post] ...! | +| CommandInjection.swift:190:18:190:18 | tainted1 [Collection element] | CommandInjection.swift:190:3:190:3 | [post] ...! [arguments, Collection element] | +| CommandInjection.swift:192:30:192:51 | [...] [Collection element] | CommandInjection.swift:194:18:194:18 | tainted2 [Collection element] | +| CommandInjection.swift:192:30:192:51 | [...] [Collection element] | CommandInjection.swift:195:19:195:19 | tainted2 [Collection element] | +| CommandInjection.swift:192:30:192:51 | [...] [Collection element] | CommandInjection.swift:196:18:196:18 | tainted2 [Collection element] | +| CommandInjection.swift:192:30:192:51 | [...] [Collection element] | CommandInjection.swift:198:13:198:13 | tainted2 [Collection element] | +| CommandInjection.swift:192:31:192:31 | userControlledString | CommandInjection.swift:192:30:192:51 | [...] [Collection element] | +| CommandInjection.swift:194:3:194:3 | [post] getter for .p1 [arguments, Collection element] | CommandInjection.swift:194:3:194:3 | [post] getter for .p1 | +| CommandInjection.swift:194:18:194:18 | tainted2 [Collection element] | CommandInjection.swift:194:3:194:3 | [post] getter for .p1 [arguments, Collection element] | +| CommandInjection.swift:195:3:195:5 | [post] ...! [arguments, Collection element] | CommandInjection.swift:195:3:195:5 | [post] ...! | +| CommandInjection.swift:195:19:195:19 | tainted2 [Collection element] | CommandInjection.swift:195:3:195:5 | [post] ...! [arguments, Collection element] | +| CommandInjection.swift:196:3:196:3 | [post] ...! [arguments, Collection element] | CommandInjection.swift:196:3:196:3 | [post] ...! | +| CommandInjection.swift:196:18:196:18 | tainted2 [Collection element] | CommandInjection.swift:196:3:196:3 | [post] ...! [arguments, Collection element] | +| CommandInjection.swift:198:13:198:13 | tainted2 [Collection element] | CommandInjection.swift:174:3:174:3 | newValue [Collection element] | | file://:0:0:0:0 | url | file://:0:0:0:0 | url | | file://:0:0:0:0 | url | file://:0:0:0:0 | url | nodes @@ -194,80 +194,80 @@ nodes | CommandInjection.swift:119:2:119:2 | [post] task4 [executableURL] | semmle.label | [post] task4 [executableURL] | | CommandInjection.swift:119:24:119:65 | call to URL.init(fileURLWithPath:) | semmle.label | call to URL.init(fileURLWithPath:) | | CommandInjection.swift:119:45:119:45 | userControlledString | semmle.label | userControlledString | -| CommandInjection.swift:120:2:120:2 | [post] task4 | semmle.label | [post] task4 | -| CommandInjection.swift:120:2:120:2 | [post] task4 [arguments, Collection element] | semmle.label | [post] task4 [arguments, Collection element] | -| CommandInjection.swift:120:20:120:56 | [...] [Collection element] | semmle.label | [...] [Collection element] | -| CommandInjection.swift:120:28:120:36 | ... .+(_:_:) ... | semmle.label | ... .+(_:_:) ... | -| CommandInjection.swift:124:2:124:7 | [post] ...? | semmle.label | [post] ...? | -| CommandInjection.swift:124:2:124:7 | [post] ...? [executableURL] | semmle.label | [post] ...? [executableURL] | -| CommandInjection.swift:124:25:124:66 | call to URL.init(fileURLWithPath:) | semmle.label | call to URL.init(fileURLWithPath:) | -| CommandInjection.swift:124:46:124:46 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:121:2:121:2 | [post] task4 | semmle.label | [post] task4 | +| CommandInjection.swift:121:2:121:2 | [post] task4 [arguments, Collection element] | semmle.label | [post] task4 [arguments, Collection element] | +| CommandInjection.swift:121:20:121:56 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| CommandInjection.swift:121:28:121:36 | ... .+(_:_:) ... | semmle.label | ... .+(_:_:) ... | | CommandInjection.swift:125:2:125:7 | [post] ...? | semmle.label | [post] ...? | -| CommandInjection.swift:125:2:125:7 | [post] ...? [arguments, Collection element] | semmle.label | [post] ...? [arguments, Collection element] | -| CommandInjection.swift:125:21:125:42 | [...] [Collection element] | semmle.label | [...] [Collection element] | -| CommandInjection.swift:125:22:125:22 | userControlledString | semmle.label | userControlledString | -| CommandInjection.swift:132:24:132:24 | userControlledString | semmle.label | userControlledString | -| CommandInjection.swift:142:42:142:42 | userControlledString | semmle.label | userControlledString | -| CommandInjection.swift:143:67:143:95 | [...] | semmle.label | [...] | -| CommandInjection.swift:143:67:143:95 | [...] [Collection element] | semmle.label | [...] [Collection element] | -| CommandInjection.swift:143:75:143:75 | userControlledString | semmle.label | userControlledString | -| CommandInjection.swift:146:23:146:55 | call to URL.init(string:) [some:0] | semmle.label | call to URL.init(string:) [some:0] | -| CommandInjection.swift:146:23:146:56 | ...! | semmle.label | ...! | -| CommandInjection.swift:146:35:146:35 | userControlledString | semmle.label | userControlledString | -| CommandInjection.swift:147:62:147:90 | [...] | semmle.label | [...] | -| CommandInjection.swift:147:62:147:90 | [...] [Collection element] | semmle.label | [...] [Collection element] | -| CommandInjection.swift:147:70:147:70 | userControlledString | semmle.label | userControlledString | -| CommandInjection.swift:152:41:152:73 | call to URL.init(string:) [some:0] | semmle.label | call to URL.init(string:) [some:0] | -| CommandInjection.swift:152:41:152:74 | ...! | semmle.label | ...! | -| CommandInjection.swift:152:53:152:53 | userControlledString | semmle.label | userControlledString | -| CommandInjection.swift:155:40:155:72 | call to URL.init(string:) [some:0] | semmle.label | call to URL.init(string:) [some:0] | -| CommandInjection.swift:155:40:155:73 | ...! | semmle.label | ...! | -| CommandInjection.swift:155:40:155:73 | ...! | semmle.label | ...! | -| CommandInjection.swift:155:52:155:52 | userControlledString | semmle.label | userControlledString | -| CommandInjection.swift:156:32:156:53 | [...] | semmle.label | [...] | -| CommandInjection.swift:156:32:156:53 | [...] [Collection element] | semmle.label | [...] [Collection element] | -| CommandInjection.swift:156:33:156:33 | userControlledString | semmle.label | userControlledString | -| CommandInjection.swift:158:45:158:77 | call to URL.init(string:) [some:0] | semmle.label | call to URL.init(string:) [some:0] | -| CommandInjection.swift:158:45:158:78 | ...! | semmle.label | ...! | -| CommandInjection.swift:158:45:158:78 | ...! | semmle.label | ...! | -| CommandInjection.swift:158:57:158:57 | userControlledString | semmle.label | userControlledString | -| CommandInjection.swift:172:3:172:3 | newValue [Collection element] | semmle.label | newValue [Collection element] | -| CommandInjection.swift:173:4:173:4 | [post] getter for .p1 | semmle.label | [post] getter for .p1 | -| CommandInjection.swift:173:4:173:4 | [post] getter for .p1 [arguments, Collection element] | semmle.label | [post] getter for .p1 [arguments, Collection element] | -| CommandInjection.swift:173:19:173:19 | newValue [Collection element] | semmle.label | newValue [Collection element] | -| CommandInjection.swift:174:4:174:6 | [post] ...! | semmle.label | [post] ...! | -| CommandInjection.swift:174:4:174:6 | [post] ...! [arguments, Collection element] | semmle.label | [post] ...! [arguments, Collection element] | -| CommandInjection.swift:174:20:174:20 | newValue [Collection element] | semmle.label | newValue [Collection element] | -| CommandInjection.swift:175:4:175:4 | [post] ...! | semmle.label | [post] ...! | -| CommandInjection.swift:175:4:175:4 | [post] ...! [arguments, Collection element] | semmle.label | [post] ...! [arguments, Collection element] | +| CommandInjection.swift:125:2:125:7 | [post] ...? [executableURL] | semmle.label | [post] ...? [executableURL] | +| CommandInjection.swift:125:25:125:66 | call to URL.init(fileURLWithPath:) | semmle.label | call to URL.init(fileURLWithPath:) | +| CommandInjection.swift:125:46:125:46 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:126:2:126:7 | [post] ...? | semmle.label | [post] ...? | +| CommandInjection.swift:126:2:126:7 | [post] ...? [arguments, Collection element] | semmle.label | [post] ...? [arguments, Collection element] | +| CommandInjection.swift:126:21:126:42 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| CommandInjection.swift:126:22:126:22 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:134:24:134:24 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:144:42:144:42 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:145:67:145:95 | [...] | semmle.label | [...] | +| CommandInjection.swift:145:67:145:95 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| CommandInjection.swift:145:75:145:75 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:148:23:148:55 | call to URL.init(string:) [some:0] | semmle.label | call to URL.init(string:) [some:0] | +| CommandInjection.swift:148:23:148:56 | ...! | semmle.label | ...! | +| CommandInjection.swift:148:35:148:35 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:149:62:149:90 | [...] | semmle.label | [...] | +| CommandInjection.swift:149:62:149:90 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| CommandInjection.swift:149:70:149:70 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:154:41:154:73 | call to URL.init(string:) [some:0] | semmle.label | call to URL.init(string:) [some:0] | +| CommandInjection.swift:154:41:154:74 | ...! | semmle.label | ...! | +| CommandInjection.swift:154:53:154:53 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:157:40:157:72 | call to URL.init(string:) [some:0] | semmle.label | call to URL.init(string:) [some:0] | +| CommandInjection.swift:157:40:157:73 | ...! | semmle.label | ...! | +| CommandInjection.swift:157:40:157:73 | ...! | semmle.label | ...! | +| CommandInjection.swift:157:52:157:52 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:158:32:158:53 | [...] | semmle.label | [...] | +| CommandInjection.swift:158:32:158:53 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| CommandInjection.swift:158:33:158:33 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:160:45:160:77 | call to URL.init(string:) [some:0] | semmle.label | call to URL.init(string:) [some:0] | +| CommandInjection.swift:160:45:160:78 | ...! | semmle.label | ...! | +| CommandInjection.swift:160:45:160:78 | ...! | semmle.label | ...! | +| CommandInjection.swift:160:57:160:57 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:174:3:174:3 | newValue [Collection element] | semmle.label | newValue [Collection element] | +| CommandInjection.swift:175:4:175:4 | [post] getter for .p1 | semmle.label | [post] getter for .p1 | +| CommandInjection.swift:175:4:175:4 | [post] getter for .p1 [arguments, Collection element] | semmle.label | [post] getter for .p1 [arguments, Collection element] | | CommandInjection.swift:175:19:175:19 | newValue [Collection element] | semmle.label | newValue [Collection element] | -| CommandInjection.swift:180:9:180:13 | let ...? [some:0] | semmle.label | let ...? [some:0] | -| CommandInjection.swift:180:13:180:13 | userControlledString | semmle.label | userControlledString | -| CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | -| CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) [some:0] | semmle.label | call to String.init(contentsOf:) [some:0] | -| CommandInjection.swift:184:18:184:39 | [...] [Collection element] | semmle.label | [...] [Collection element] | -| CommandInjection.swift:184:19:184:19 | userControlledString | semmle.label | userControlledString | -| CommandInjection.swift:186:3:186:3 | [post] getter for .p1 | semmle.label | [post] getter for .p1 | -| CommandInjection.swift:186:3:186:3 | [post] getter for .p1 [arguments, Collection element] | semmle.label | [post] getter for .p1 [arguments, Collection element] | -| CommandInjection.swift:186:18:186:18 | tainted1 [Collection element] | semmle.label | tainted1 [Collection element] | -| CommandInjection.swift:187:3:187:5 | [post] ...! | semmle.label | [post] ...! | -| CommandInjection.swift:187:3:187:5 | [post] ...! [arguments, Collection element] | semmle.label | [post] ...! [arguments, Collection element] | -| CommandInjection.swift:187:19:187:19 | tainted1 [Collection element] | semmle.label | tainted1 [Collection element] | -| CommandInjection.swift:188:3:188:3 | [post] ...! | semmle.label | [post] ...! | -| CommandInjection.swift:188:3:188:3 | [post] ...! [arguments, Collection element] | semmle.label | [post] ...! [arguments, Collection element] | +| CommandInjection.swift:176:4:176:6 | [post] ...! | semmle.label | [post] ...! | +| CommandInjection.swift:176:4:176:6 | [post] ...! [arguments, Collection element] | semmle.label | [post] ...! [arguments, Collection element] | +| CommandInjection.swift:176:20:176:20 | newValue [Collection element] | semmle.label | newValue [Collection element] | +| CommandInjection.swift:177:4:177:4 | [post] ...! | semmle.label | [post] ...! | +| CommandInjection.swift:177:4:177:4 | [post] ...! [arguments, Collection element] | semmle.label | [post] ...! [arguments, Collection element] | +| CommandInjection.swift:177:19:177:19 | newValue [Collection element] | semmle.label | newValue [Collection element] | +| CommandInjection.swift:182:9:182:13 | let ...? [some:0] | semmle.label | let ...? [some:0] | +| CommandInjection.swift:182:13:182:13 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | +| CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) [some:0] | semmle.label | call to String.init(contentsOf:) [some:0] | +| CommandInjection.swift:186:18:186:39 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| CommandInjection.swift:186:19:186:19 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:188:3:188:3 | [post] getter for .p1 | semmle.label | [post] getter for .p1 | +| CommandInjection.swift:188:3:188:3 | [post] getter for .p1 [arguments, Collection element] | semmle.label | [post] getter for .p1 [arguments, Collection element] | | CommandInjection.swift:188:18:188:18 | tainted1 [Collection element] | semmle.label | tainted1 [Collection element] | -| CommandInjection.swift:190:30:190:51 | [...] [Collection element] | semmle.label | [...] [Collection element] | -| CommandInjection.swift:190:31:190:31 | userControlledString | semmle.label | userControlledString | -| CommandInjection.swift:192:3:192:3 | [post] getter for .p1 | semmle.label | [post] getter for .p1 | -| CommandInjection.swift:192:3:192:3 | [post] getter for .p1 [arguments, Collection element] | semmle.label | [post] getter for .p1 [arguments, Collection element] | -| CommandInjection.swift:192:18:192:18 | tainted2 [Collection element] | semmle.label | tainted2 [Collection element] | -| CommandInjection.swift:193:3:193:5 | [post] ...! | semmle.label | [post] ...! | -| CommandInjection.swift:193:3:193:5 | [post] ...! [arguments, Collection element] | semmle.label | [post] ...! [arguments, Collection element] | -| CommandInjection.swift:193:19:193:19 | tainted2 [Collection element] | semmle.label | tainted2 [Collection element] | -| CommandInjection.swift:194:3:194:3 | [post] ...! | semmle.label | [post] ...! | -| CommandInjection.swift:194:3:194:3 | [post] ...! [arguments, Collection element] | semmle.label | [post] ...! [arguments, Collection element] | +| CommandInjection.swift:189:3:189:5 | [post] ...! | semmle.label | [post] ...! | +| CommandInjection.swift:189:3:189:5 | [post] ...! [arguments, Collection element] | semmle.label | [post] ...! [arguments, Collection element] | +| CommandInjection.swift:189:19:189:19 | tainted1 [Collection element] | semmle.label | tainted1 [Collection element] | +| CommandInjection.swift:190:3:190:3 | [post] ...! | semmle.label | [post] ...! | +| CommandInjection.swift:190:3:190:3 | [post] ...! [arguments, Collection element] | semmle.label | [post] ...! [arguments, Collection element] | +| CommandInjection.swift:190:18:190:18 | tainted1 [Collection element] | semmle.label | tainted1 [Collection element] | +| CommandInjection.swift:192:30:192:51 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| CommandInjection.swift:192:31:192:31 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:194:3:194:3 | [post] getter for .p1 | semmle.label | [post] getter for .p1 | +| CommandInjection.swift:194:3:194:3 | [post] getter for .p1 [arguments, Collection element] | semmle.label | [post] getter for .p1 [arguments, Collection element] | | CommandInjection.swift:194:18:194:18 | tainted2 [Collection element] | semmle.label | tainted2 [Collection element] | -| CommandInjection.swift:196:13:196:13 | tainted2 [Collection element] | semmle.label | tainted2 [Collection element] | +| CommandInjection.swift:195:3:195:5 | [post] ...! | semmle.label | [post] ...! | +| CommandInjection.swift:195:3:195:5 | [post] ...! [arguments, Collection element] | semmle.label | [post] ...! [arguments, Collection element] | +| CommandInjection.swift:195:19:195:19 | tainted2 [Collection element] | semmle.label | tainted2 [Collection element] | +| CommandInjection.swift:196:3:196:3 | [post] ...! | semmle.label | [post] ...! | +| CommandInjection.swift:196:3:196:3 | [post] ...! [arguments, Collection element] | semmle.label | [post] ...! [arguments, Collection element] | +| CommandInjection.swift:196:18:196:18 | tainted2 [Collection element] | semmle.label | tainted2 [Collection element] | +| CommandInjection.swift:198:13:198:13 | tainted2 [Collection element] | semmle.label | tainted2 [Collection element] | | file://:0:0:0:0 | url | semmle.label | url | | file://:0:0:0:0 | url | semmle.label | url | | file://:0:0:0:0 | url | semmle.label | url | @@ -282,25 +282,25 @@ subpaths | CommandInjection.swift:114:2:114:2 | [post] task3 | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:114:2:114:2 | [post] task3 | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | | CommandInjection.swift:115:2:115:2 | [post] task3 | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:115:2:115:2 | [post] task3 | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | | CommandInjection.swift:119:2:119:2 | [post] task4 | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:119:2:119:2 | [post] task4 | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | -| CommandInjection.swift:120:2:120:2 | [post] task4 | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:120:2:120:2 | [post] task4 | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | -| CommandInjection.swift:124:2:124:7 | [post] ...? | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:124:2:124:7 | [post] ...? | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:121:2:121:2 | [post] task4 | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:121:2:121:2 | [post] task4 | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | | CommandInjection.swift:125:2:125:7 | [post] ...? | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:125:2:125:7 | [post] ...? | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | -| CommandInjection.swift:142:42:142:42 | userControlledString | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:142:42:142:42 | userControlledString | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | -| CommandInjection.swift:143:67:143:95 | [...] | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:143:67:143:95 | [...] | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | -| CommandInjection.swift:146:23:146:56 | ...! | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:146:23:146:56 | ...! | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | -| CommandInjection.swift:147:62:147:90 | [...] | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:147:62:147:90 | [...] | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | -| CommandInjection.swift:152:41:152:74 | ...! | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:152:41:152:74 | ...! | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | -| CommandInjection.swift:155:40:155:73 | ...! | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:155:40:155:73 | ...! | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | -| CommandInjection.swift:156:32:156:53 | [...] | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:156:32:156:53 | [...] | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | -| CommandInjection.swift:158:45:158:78 | ...! | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:158:45:158:78 | ...! | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | -| CommandInjection.swift:173:4:173:4 | [post] getter for .p1 | CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | CommandInjection.swift:173:4:173:4 | [post] getter for .p1 | This command depends on a $@. | CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | user-provided value | -| CommandInjection.swift:174:4:174:6 | [post] ...! | CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | CommandInjection.swift:174:4:174:6 | [post] ...! | This command depends on a $@. | CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | user-provided value | -| CommandInjection.swift:175:4:175:4 | [post] ...! | CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | CommandInjection.swift:175:4:175:4 | [post] ...! | This command depends on a $@. | CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | user-provided value | -| CommandInjection.swift:186:3:186:3 | [post] getter for .p1 | CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | CommandInjection.swift:186:3:186:3 | [post] getter for .p1 | This command depends on a $@. | CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | user-provided value | -| CommandInjection.swift:187:3:187:5 | [post] ...! | CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | CommandInjection.swift:187:3:187:5 | [post] ...! | This command depends on a $@. | CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | user-provided value | -| CommandInjection.swift:188:3:188:3 | [post] ...! | CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | CommandInjection.swift:188:3:188:3 | [post] ...! | This command depends on a $@. | CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | user-provided value | -| CommandInjection.swift:192:3:192:3 | [post] getter for .p1 | CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | CommandInjection.swift:192:3:192:3 | [post] getter for .p1 | This command depends on a $@. | CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | user-provided value | -| CommandInjection.swift:193:3:193:5 | [post] ...! | CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | CommandInjection.swift:193:3:193:5 | [post] ...! | This command depends on a $@. | CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | user-provided value | -| CommandInjection.swift:194:3:194:3 | [post] ...! | CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | CommandInjection.swift:194:3:194:3 | [post] ...! | This command depends on a $@. | CommandInjection.swift:180:41:180:95 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:126:2:126:7 | [post] ...? | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:126:2:126:7 | [post] ...? | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:144:42:144:42 | userControlledString | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:144:42:144:42 | userControlledString | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:145:67:145:95 | [...] | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:145:67:145:95 | [...] | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:148:23:148:56 | ...! | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:148:23:148:56 | ...! | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:149:62:149:90 | [...] | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:149:62:149:90 | [...] | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:154:41:154:74 | ...! | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:154:41:154:74 | ...! | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:157:40:157:73 | ...! | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:157:40:157:73 | ...! | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:158:32:158:53 | [...] | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:158:32:158:53 | [...] | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:160:45:160:78 | ...! | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:160:45:160:78 | ...! | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:175:4:175:4 | [post] getter for .p1 | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | CommandInjection.swift:175:4:175:4 | [post] getter for .p1 | This command depends on a $@. | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:176:4:176:6 | [post] ...! | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | CommandInjection.swift:176:4:176:6 | [post] ...! | This command depends on a $@. | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:177:4:177:4 | [post] ...! | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | CommandInjection.swift:177:4:177:4 | [post] ...! | This command depends on a $@. | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:188:3:188:3 | [post] getter for .p1 | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | CommandInjection.swift:188:3:188:3 | [post] getter for .p1 | This command depends on a $@. | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:189:3:189:5 | [post] ...! | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | CommandInjection.swift:189:3:189:5 | [post] ...! | This command depends on a $@. | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:190:3:190:3 | [post] ...! | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | CommandInjection.swift:190:3:190:3 | [post] ...! | This command depends on a $@. | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:194:3:194:3 | [post] getter for .p1 | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | CommandInjection.swift:194:3:194:3 | [post] getter for .p1 | This command depends on a $@. | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:195:3:195:5 | [post] ...! | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | CommandInjection.swift:195:3:195:5 | [post] ...! | This command depends on a $@. | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:196:3:196:3 | [post] ...! | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | CommandInjection.swift:196:3:196:3 | [post] ...! | This command depends on a $@. | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | user-provided value | | file://:0:0:0:0 | url | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | file://:0:0:0:0 | url | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | | file://:0:0:0:0 | url | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | file://:0:0:0:0 | url | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | diff --git a/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.swift b/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.swift index c1facad1305..9f2a9285611 100644 --- a/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.swift +++ b/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.swift @@ -117,6 +117,7 @@ func testCommandInjectionMore(mySafeString: String) { let task4 = Process() task4.executableURL = URL(fileURLWithPath: userControlledString) // BAD + task4.arguments = ["abc", "def" + userControlledString] // BAD try! task4.run() @@ -126,6 +127,7 @@ func testCommandInjectionMore(mySafeString: String) { try! task5?.run() let task6 = MyProcess() + task6.executableURL = URL(string: userControlledString)! // BAD [NOT DETECTED] task6.arguments = [userControlledString] // BAD [NOT DETECTED] task6.setArguments([userControlledString]) // BAD [NOT DETECTED] From 554007b30512f2e71952352978a7c35e1d749473 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 31 Oct 2023 17:19:28 +0000 Subject: [PATCH 010/122] Swift: Add a couple more test cases close to the failures. --- .../Security/CWE-078/CommandInjection.expected | 12 ++++++++++++ .../Security/CWE-078/CommandInjection.swift | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected b/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected index 2ef29646037..0333f6d1824 100644 --- a/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected +++ b/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected @@ -33,6 +33,7 @@ edges | CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:114:36:114:36 | userControlledString | | CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:115:28:115:28 | userControlledString | | CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:119:45:119:45 | userControlledString | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:120:36:120:36 | userControlledString | | CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:121:28:121:36 | ... .+(_:_:) ... | | CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:125:46:125:46 | userControlledString | | CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:126:22:126:22 | userControlledString | @@ -49,6 +50,7 @@ edges | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:114:36:114:36 | userControlledString | | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:115:28:115:28 | userControlledString | | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:119:45:119:45 | userControlledString | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:120:36:120:36 | userControlledString | | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:121:28:121:36 | ... .+(_:_:) ... | | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:125:46:125:46 | userControlledString | | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:126:22:126:22 | userControlledString | @@ -72,6 +74,10 @@ edges | CommandInjection.swift:119:2:119:2 | [post] task4 [executableURL] | CommandInjection.swift:119:2:119:2 | [post] task4 | | CommandInjection.swift:119:24:119:65 | call to URL.init(fileURLWithPath:) | CommandInjection.swift:119:2:119:2 | [post] task4 [executableURL] | | CommandInjection.swift:119:45:119:45 | userControlledString | CommandInjection.swift:119:24:119:65 | call to URL.init(fileURLWithPath:) | +| CommandInjection.swift:120:2:120:2 | [post] task4 [executableURL] | CommandInjection.swift:120:2:120:2 | [post] task4 | +| CommandInjection.swift:120:24:120:56 | call to URL.init(string:) [some:0] | CommandInjection.swift:120:24:120:57 | ...! | +| CommandInjection.swift:120:24:120:57 | ...! | CommandInjection.swift:120:2:120:2 | [post] task4 [executableURL] | +| CommandInjection.swift:120:36:120:36 | userControlledString | CommandInjection.swift:120:24:120:56 | call to URL.init(string:) [some:0] | | CommandInjection.swift:121:2:121:2 | [post] task4 [arguments, Collection element] | CommandInjection.swift:121:2:121:2 | [post] task4 | | CommandInjection.swift:121:20:121:56 | [...] [Collection element] | CommandInjection.swift:121:2:121:2 | [post] task4 [arguments, Collection element] | | CommandInjection.swift:121:28:121:36 | ... .+(_:_:) ... | CommandInjection.swift:121:20:121:56 | [...] [Collection element] | @@ -194,6 +200,11 @@ nodes | CommandInjection.swift:119:2:119:2 | [post] task4 [executableURL] | semmle.label | [post] task4 [executableURL] | | CommandInjection.swift:119:24:119:65 | call to URL.init(fileURLWithPath:) | semmle.label | call to URL.init(fileURLWithPath:) | | CommandInjection.swift:119:45:119:45 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:120:2:120:2 | [post] task4 | semmle.label | [post] task4 | +| CommandInjection.swift:120:2:120:2 | [post] task4 [executableURL] | semmle.label | [post] task4 [executableURL] | +| CommandInjection.swift:120:24:120:56 | call to URL.init(string:) [some:0] | semmle.label | call to URL.init(string:) [some:0] | +| CommandInjection.swift:120:24:120:57 | ...! | semmle.label | ...! | +| CommandInjection.swift:120:36:120:36 | userControlledString | semmle.label | userControlledString | | CommandInjection.swift:121:2:121:2 | [post] task4 | semmle.label | [post] task4 | | CommandInjection.swift:121:2:121:2 | [post] task4 [arguments, Collection element] | semmle.label | [post] task4 [arguments, Collection element] | | CommandInjection.swift:121:20:121:56 | [...] [Collection element] | semmle.label | [...] [Collection element] | @@ -282,6 +293,7 @@ subpaths | CommandInjection.swift:114:2:114:2 | [post] task3 | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:114:2:114:2 | [post] task3 | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | | CommandInjection.swift:115:2:115:2 | [post] task3 | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:115:2:115:2 | [post] task3 | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | | CommandInjection.swift:119:2:119:2 | [post] task4 | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:119:2:119:2 | [post] task4 | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:120:2:120:2 | [post] task4 | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:120:2:120:2 | [post] task4 | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | | CommandInjection.swift:121:2:121:2 | [post] task4 | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:121:2:121:2 | [post] task4 | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | | CommandInjection.swift:125:2:125:7 | [post] ...? | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:125:2:125:7 | [post] ...? | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | | CommandInjection.swift:126:2:126:7 | [post] ...? | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:126:2:126:7 | [post] ...? | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | diff --git a/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.swift b/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.swift index 9f2a9285611..88b9f8b9bf2 100644 --- a/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.swift +++ b/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.swift @@ -117,7 +117,7 @@ func testCommandInjectionMore(mySafeString: String) { let task4 = Process() task4.executableURL = URL(fileURLWithPath: userControlledString) // BAD - + task4.executableURL = URL(string: userControlledString)! // BAD task4.arguments = ["abc", "def" + userControlledString] // BAD try! task4.run() @@ -127,7 +127,7 @@ func testCommandInjectionMore(mySafeString: String) { try! task5?.run() let task6 = MyProcess() - + task6.executableURL = URL(fileURLWithPath: userControlledString) // BAD [NOT DETECTED] task6.executableURL = URL(string: userControlledString)! // BAD [NOT DETECTED] task6.arguments = [userControlledString] // BAD [NOT DETECTED] task6.setArguments([userControlledString]) // BAD [NOT DETECTED] From 206acea41ce0163b12f6c6bacbb880f7e6b6c5b0 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 1 Nov 2023 17:39:46 +0000 Subject: [PATCH 011/122] Swift: Fix defaultImplicitTaintRead for sinks that are field accesses on a subclass of the type containing the field. --- .../dataflow/internal/TaintTrackingPublic.qll | 8 +++- .../CWE-078/CommandInjection.expected | 46 +++++++++++++++++++ .../Security/CWE-078/CommandInjection.swift | 10 ++-- 3 files changed, 57 insertions(+), 7 deletions(-) diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/TaintTrackingPublic.qll b/swift/ql/lib/codeql/swift/dataflow/internal/TaintTrackingPublic.qll index 833b0583c16..ce2584d887a 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/TaintTrackingPublic.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/TaintTrackingPublic.qll @@ -32,8 +32,12 @@ predicate defaultImplicitTaintRead(DataFlow::Node node, DataFlow::ContentSet cs) // So when the node is a `PostUpdateNode` we allow any sequence of implicit read steps of an appropriate // type to make sure we arrive at the sink with an empty access path. exists(NominalTypeDecl d, Decl cx | - node.(DataFlow::PostUpdateNode).getPreUpdateNode().asExpr().getType().getUnderlyingType() = - d.getType().getABaseType*() and + node.(DataFlow::PostUpdateNode) + .getPreUpdateNode() + .asExpr() + .getType() + .getUnderlyingType() + .getABaseType*() = d.getType() and cx.asNominalTypeDecl() = d and cs.getAReadContent().(DataFlow::Content::FieldContent).getField() = cx.getAMember() ) diff --git a/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected b/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected index 0333f6d1824..b6c8f60bbc1 100644 --- a/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected +++ b/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected @@ -29,6 +29,9 @@ edges | CommandInjection.swift:81:6:81:6 | [post] task2 [arguments, Collection element] | CommandInjection.swift:81:6:81:6 | [post] task2 | | CommandInjection.swift:81:24:81:46 | [...] [Collection element] | CommandInjection.swift:81:6:81:6 | [post] task2 [arguments, Collection element] | | CommandInjection.swift:81:31:81:31 | validatedString | CommandInjection.swift:81:24:81:46 | [...] [Collection element] | +| CommandInjection.swift:93:20:93:40 | arguments [Collection element] | CommandInjection.swift:94:20:94:20 | arguments [Collection element] | +| CommandInjection.swift:94:3:94:3 | [post] self [arguments, Collection element] | CommandInjection.swift:94:3:94:3 | [post] self | +| CommandInjection.swift:94:20:94:20 | arguments [Collection element] | CommandInjection.swift:94:3:94:3 | [post] self [arguments, Collection element] | | CommandInjection.swift:99:8:99:12 | let ...? [some:0] | CommandInjection.swift:99:12:99:12 | userControlledString | | CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:114:36:114:36 | userControlledString | | CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:115:28:115:28 | userControlledString | @@ -37,6 +40,10 @@ edges | CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:121:28:121:36 | ... .+(_:_:) ... | | CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:125:46:125:46 | userControlledString | | CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:126:22:126:22 | userControlledString | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:130:45:130:45 | userControlledString | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:131:36:131:36 | userControlledString | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:132:21:132:21 | userControlledString | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:133:22:133:22 | userControlledString | | CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:134:24:134:24 | userControlledString | | CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:144:42:144:42 | userControlledString | | CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:145:75:145:75 | userControlledString | @@ -54,6 +61,10 @@ edges | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:121:28:121:36 | ... .+(_:_:) ... | | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:125:46:125:46 | userControlledString | | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:126:22:126:22 | userControlledString | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:130:45:130:45 | userControlledString | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:131:36:131:36 | userControlledString | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:132:21:132:21 | userControlledString | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:133:22:133:22 | userControlledString | | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:134:24:134:24 | userControlledString | | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:144:42:144:42 | userControlledString | | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:145:75:145:75 | userControlledString | @@ -87,6 +98,18 @@ edges | CommandInjection.swift:126:2:126:7 | [post] ...? [arguments, Collection element] | CommandInjection.swift:126:2:126:7 | [post] ...? | | CommandInjection.swift:126:21:126:42 | [...] [Collection element] | CommandInjection.swift:126:2:126:7 | [post] ...? [arguments, Collection element] | | CommandInjection.swift:126:22:126:22 | userControlledString | CommandInjection.swift:126:21:126:42 | [...] [Collection element] | +| CommandInjection.swift:130:2:130:2 | [post] task6 [executableURL] | CommandInjection.swift:130:2:130:2 | [post] task6 | +| CommandInjection.swift:130:24:130:65 | call to URL.init(fileURLWithPath:) | CommandInjection.swift:130:2:130:2 | [post] task6 [executableURL] | +| CommandInjection.swift:130:45:130:45 | userControlledString | CommandInjection.swift:130:24:130:65 | call to URL.init(fileURLWithPath:) | +| CommandInjection.swift:131:2:131:2 | [post] task6 [executableURL] | CommandInjection.swift:131:2:131:2 | [post] task6 | +| CommandInjection.swift:131:24:131:56 | call to URL.init(string:) [some:0] | CommandInjection.swift:131:24:131:57 | ...! | +| CommandInjection.swift:131:24:131:57 | ...! | CommandInjection.swift:131:2:131:2 | [post] task6 [executableURL] | +| CommandInjection.swift:131:36:131:36 | userControlledString | CommandInjection.swift:131:24:131:56 | call to URL.init(string:) [some:0] | +| CommandInjection.swift:132:2:132:2 | [post] task6 [arguments, Collection element] | CommandInjection.swift:132:2:132:2 | [post] task6 | +| CommandInjection.swift:132:20:132:41 | [...] [Collection element] | CommandInjection.swift:132:2:132:2 | [post] task6 [arguments, Collection element] | +| CommandInjection.swift:132:21:132:21 | userControlledString | CommandInjection.swift:132:20:132:41 | [...] [Collection element] | +| CommandInjection.swift:133:21:133:42 | [...] [Collection element] | CommandInjection.swift:93:20:93:40 | arguments [Collection element] | +| CommandInjection.swift:133:22:133:22 | userControlledString | CommandInjection.swift:133:21:133:42 | [...] [Collection element] | | CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:144:42:144:42 | userControlledString | | CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:145:75:145:75 | userControlledString | | CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:148:35:148:35 | userControlledString | @@ -183,6 +206,10 @@ nodes | CommandInjection.swift:81:6:81:6 | [post] task2 [arguments, Collection element] | semmle.label | [post] task2 [arguments, Collection element] | | CommandInjection.swift:81:24:81:46 | [...] [Collection element] | semmle.label | [...] [Collection element] | | CommandInjection.swift:81:31:81:31 | validatedString | semmle.label | validatedString | +| CommandInjection.swift:93:20:93:40 | arguments [Collection element] | semmle.label | arguments [Collection element] | +| CommandInjection.swift:94:3:94:3 | [post] self | semmle.label | [post] self | +| CommandInjection.swift:94:3:94:3 | [post] self [arguments, Collection element] | semmle.label | [post] self [arguments, Collection element] | +| CommandInjection.swift:94:20:94:20 | arguments [Collection element] | semmle.label | arguments [Collection element] | | CommandInjection.swift:99:8:99:12 | let ...? [some:0] | semmle.label | let ...? [some:0] | | CommandInjection.swift:99:12:99:12 | userControlledString | semmle.label | userControlledString | | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | @@ -217,6 +244,21 @@ nodes | CommandInjection.swift:126:2:126:7 | [post] ...? [arguments, Collection element] | semmle.label | [post] ...? [arguments, Collection element] | | CommandInjection.swift:126:21:126:42 | [...] [Collection element] | semmle.label | [...] [Collection element] | | CommandInjection.swift:126:22:126:22 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:130:2:130:2 | [post] task6 | semmle.label | [post] task6 | +| CommandInjection.swift:130:2:130:2 | [post] task6 [executableURL] | semmle.label | [post] task6 [executableURL] | +| CommandInjection.swift:130:24:130:65 | call to URL.init(fileURLWithPath:) | semmle.label | call to URL.init(fileURLWithPath:) | +| CommandInjection.swift:130:45:130:45 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:131:2:131:2 | [post] task6 | semmle.label | [post] task6 | +| CommandInjection.swift:131:2:131:2 | [post] task6 [executableURL] | semmle.label | [post] task6 [executableURL] | +| CommandInjection.swift:131:24:131:56 | call to URL.init(string:) [some:0] | semmle.label | call to URL.init(string:) [some:0] | +| CommandInjection.swift:131:24:131:57 | ...! | semmle.label | ...! | +| CommandInjection.swift:131:36:131:36 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:132:2:132:2 | [post] task6 | semmle.label | [post] task6 | +| CommandInjection.swift:132:2:132:2 | [post] task6 [arguments, Collection element] | semmle.label | [post] task6 [arguments, Collection element] | +| CommandInjection.swift:132:20:132:41 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| CommandInjection.swift:132:21:132:21 | userControlledString | semmle.label | userControlledString | +| CommandInjection.swift:133:21:133:42 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| CommandInjection.swift:133:22:133:22 | userControlledString | semmle.label | userControlledString | | CommandInjection.swift:134:24:134:24 | userControlledString | semmle.label | userControlledString | | CommandInjection.swift:144:42:144:42 | userControlledString | semmle.label | userControlledString | | CommandInjection.swift:145:67:145:95 | [...] | semmle.label | [...] | @@ -290,6 +332,7 @@ subpaths #select | CommandInjection.swift:75:2:75:2 | [post] task1 | CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) | CommandInjection.swift:75:2:75:2 | [post] task1 | This command depends on a $@. | CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) | user-provided value | | CommandInjection.swift:81:6:81:6 | [post] task2 | CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) | CommandInjection.swift:81:6:81:6 | [post] task2 | This command depends on a $@. | CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:94:3:94:3 | [post] self | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:94:3:94:3 | [post] self | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | | CommandInjection.swift:114:2:114:2 | [post] task3 | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:114:2:114:2 | [post] task3 | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | | CommandInjection.swift:115:2:115:2 | [post] task3 | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:115:2:115:2 | [post] task3 | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | | CommandInjection.swift:119:2:119:2 | [post] task4 | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:119:2:119:2 | [post] task4 | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | @@ -297,6 +340,9 @@ subpaths | CommandInjection.swift:121:2:121:2 | [post] task4 | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:121:2:121:2 | [post] task4 | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | | CommandInjection.swift:125:2:125:7 | [post] ...? | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:125:2:125:7 | [post] ...? | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | | CommandInjection.swift:126:2:126:7 | [post] ...? | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:126:2:126:7 | [post] ...? | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:130:2:130:2 | [post] task6 | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:130:2:130:2 | [post] task6 | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:131:2:131:2 | [post] task6 | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:131:2:131:2 | [post] task6 | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | +| CommandInjection.swift:132:2:132:2 | [post] task6 | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:132:2:132:2 | [post] task6 | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | | CommandInjection.swift:144:42:144:42 | userControlledString | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:144:42:144:42 | userControlledString | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | | CommandInjection.swift:145:67:145:95 | [...] | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:145:67:145:95 | [...] | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | | CommandInjection.swift:148:23:148:56 | ...! | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:148:23:148:56 | ...! | This command depends on a $@. | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | user-provided value | diff --git a/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.swift b/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.swift index 88b9f8b9bf2..bf97adb4166 100644 --- a/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.swift +++ b/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.swift @@ -91,7 +91,7 @@ class MyProcess : Process { var harmlessField: String? func setArguments(_ arguments: [String]) { - self.arguments = arguments + self.arguments = arguments // BAD } } @@ -127,10 +127,10 @@ func testCommandInjectionMore(mySafeString: String) { try! task5?.run() let task6 = MyProcess() - task6.executableURL = URL(fileURLWithPath: userControlledString) // BAD [NOT DETECTED] - task6.executableURL = URL(string: userControlledString)! // BAD [NOT DETECTED] - task6.arguments = [userControlledString] // BAD [NOT DETECTED] - task6.setArguments([userControlledString]) // BAD [NOT DETECTED] + task6.executableURL = URL(fileURLWithPath: userControlledString) // BAD + task6.executableURL = URL(string: userControlledString)! // BAD + task6.arguments = [userControlledString] // BAD + task6.setArguments([userControlledString]) // BAD (flagged inside `setArguments`) task6.harmlessField = userControlledString // GOOD try! task6.run() From 48c3db2290f1e6436ea895d00064674bf23cf57f Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 1 Nov 2023 18:49:45 +0000 Subject: [PATCH 012/122] Swift: Change note. --- swift/ql/lib/change-notes/2023-11-01-field-sinks.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 swift/ql/lib/change-notes/2023-11-01-field-sinks.md diff --git a/swift/ql/lib/change-notes/2023-11-01-field-sinks.md b/swift/ql/lib/change-notes/2023-11-01-field-sinks.md new file mode 100644 index 00000000000..b9c8d522867 --- /dev/null +++ b/swift/ql/lib/change-notes/2023-11-01-field-sinks.md @@ -0,0 +1,5 @@ +--- +category: minorAnalysis +--- + +* Fixed a bug where some flow sinks at field accesses were not being correctly identified. From 5487b404ed374d31981f46aa3c4d5c31d66048b0 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Thu, 2 Nov 2023 16:39:26 +0000 Subject: [PATCH 013/122] C++: Add failing test. --- .../dataflow/taint-tests/localTaint.expected | 11 +++++++++++ .../test/library-tests/dataflow/taint-tests/taint.cpp | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected index f48d71cd1ab..017c978bec3 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected @@ -6646,6 +6646,17 @@ WARNING: Module TaintTracking has been deprecated and may be removed in future ( | taint.cpp:738:17:738:31 | call to indirect_source | taint.cpp:739:30:739:35 | source | | | taint.cpp:739:22:739:28 | call to realloc | taint.cpp:740:7:740:10 | dest | | | taint.cpp:739:30:739:35 | source | taint.cpp:739:22:739:28 | call to realloc | TAINT | +| taint.cpp:743:40:743:45 | buffer | taint.cpp:744:5:744:10 | buffer | | +| taint.cpp:743:40:743:45 | buffer | taint.cpp:745:27:745:32 | buffer | | +| taint.cpp:744:4:744:10 | * ... | taint.cpp:744:3:744:10 | * ... | TAINT | +| taint.cpp:744:5:744:10 | buffer | taint.cpp:744:4:744:10 | * ... | TAINT | +| taint.cpp:744:14:744:19 | call to source | taint.cpp:744:3:744:21 | ... = ... | | +| taint.cpp:745:19:745:25 | call to realloc | taint.cpp:743:40:743:45 | buffer | | +| taint.cpp:745:19:745:25 | call to realloc | taint.cpp:745:3:745:36 | ... = ... | | +| taint.cpp:745:19:745:25 | call to realloc | taint.cpp:746:10:746:15 | buffer | | +| taint.cpp:745:27:745:32 | buffer | taint.cpp:745:19:745:25 | call to realloc | TAINT | +| taint.cpp:746:9:746:15 | * ... | taint.cpp:746:8:746:15 | * ... | TAINT | +| taint.cpp:746:10:746:15 | buffer | taint.cpp:746:9:746:15 | * ... | TAINT | | vector.cpp:16:43:16:49 | source1 | vector.cpp:17:26:17:32 | source1 | | | vector.cpp:16:43:16:49 | source1 | vector.cpp:31:38:31:44 | source1 | | | vector.cpp:17:21:17:33 | call to vector | vector.cpp:19:14:19:14 | v | | diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp index da2c8034c4b..6815f45b1b7 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp @@ -738,4 +738,10 @@ void test_realloc() { char *source = indirect_source(); char *dest = (char*)realloc(source, 16); sink(dest); // $ ir MISSING: ast +} + +void test_realloc_2_indirections(int **buffer) { + **buffer = source(); + buffer = (int**)realloc(buffer, 16); + sink(**buffer); // $ MISSING: ir,ast } \ No newline at end of file From b82dfa9a21bfdb2fb193f4dd7a01e02d85cc72d5 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Thu, 2 Nov 2023 16:45:50 +0000 Subject: [PATCH 014/122] C++: Fix failing test by allocating 'TFunctionInput's and 'TFunctionOutput's for more indirections. Note that we now mark two output nodes coming out of 'getaddrinfo' as a remote flow source (the first indirection and the second indirection). We'll fix that in the next commit. --- .../interfaces/FunctionInputsAndOutputs.qll | 22 +++++++++++++------ .../dataflow-ir-consistency.expected | 4 ++++ .../fields/dataflow-ir-consistency.expected | 2 ++ .../source-sink-tests/remote-flow.expected | 4 +++- .../dataflow/taint-tests/localTaint.expected | 2 +- .../dataflow/taint-tests/taint.cpp | 2 +- 6 files changed, 26 insertions(+), 10 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/models/interfaces/FunctionInputsAndOutputs.qll b/cpp/ql/lib/semmle/code/cpp/models/interfaces/FunctionInputsAndOutputs.qll index 7fd36f26183..f80d08dfba7 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/interfaces/FunctionInputsAndOutputs.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/interfaces/FunctionInputsAndOutputs.qll @@ -8,7 +8,7 @@ import semmle.code.cpp.Parameter private newtype TFunctionInput = TInParameter(ParameterIndex i) or - TInParameterDeref(ParameterIndex i) or + TInParameterDeref(ParameterIndex i, int indirectionIndex) { indirectionIndex = [1, 2] } or TInQualifierObject() or TInQualifierAddress() or TInReturnValueDeref() @@ -245,15 +245,18 @@ class InParameter extends FunctionInput, TInParameter { */ class InParameterDeref extends FunctionInput, TInParameterDeref { ParameterIndex index; + int indirectionIndex; - InParameterDeref() { this = TInParameterDeref(index) } + InParameterDeref() { this = TInParameterDeref(index, indirectionIndex) } override string toString() { result = "InParameterDeref " + index.toString() } /** Gets the zero-based index of the parameter. */ ParameterIndex getIndex() { result = index } - override predicate isParameterDeref(ParameterIndex i) { i = index } + override predicate isParameterDeref(ParameterIndex i, int indirection) { + i = index and indirectionIndex = indirection + } } /** @@ -321,10 +324,10 @@ class InReturnValueDeref extends FunctionInput, TInReturnValueDeref { } private newtype TFunctionOutput = - TOutParameterDeref(ParameterIndex i) or + TOutParameterDeref(ParameterIndex i, int indirectionIndex) { indirectionIndex = [1, 2] } or TOutQualifierObject() or TOutReturnValue() or - TOutReturnValueDeref() + TOutReturnValueDeref(int indirections) { indirections = [1, 2] } /** * An output from a function. This can be: @@ -498,8 +501,9 @@ class FunctionOutput extends TFunctionOutput { */ class OutParameterDeref extends FunctionOutput, TOutParameterDeref { ParameterIndex index; + int indirectionIndex; - OutParameterDeref() { this = TOutParameterDeref(index) } + OutParameterDeref() { this = TOutParameterDeref(index, indirectionIndex) } override string toString() { result = "OutParameterDeref " + index.toString() } @@ -508,7 +512,7 @@ class OutParameterDeref extends FunctionOutput, TOutParameterDeref { override predicate isParameterDeref(ParameterIndex i) { i = index } override predicate isParameterDeref(ParameterIndex i, int ind) { - this.isParameterDeref(i) and ind = 1 + this.isParameterDeref(i) and ind = indirectionIndex } } @@ -572,4 +576,8 @@ class OutReturnValueDeref extends FunctionOutput, TOutReturnValueDeref { override string toString() { result = "OutReturnValueDeref" } override predicate isReturnValueDeref() { any() } + + override predicate isReturnValueDeref(int indirectionIndex) { + this = TOutReturnValueDeref(indirectionIndex) + } } 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 bacd714e614..b7b2a8eab90 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 @@ -20,8 +20,12 @@ reverseRead argHasPostUpdate postWithInFlow | test.cpp:384:10:384:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | +| test.cpp:384:10:384:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | +| test.cpp:391:10:391:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | | test.cpp:391:10:391:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | | test.cpp:400:10:400:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | +| test.cpp:400:10:400:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | +| test.cpp:407:10:407:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | | test.cpp:407:10:407:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | viableImplInCallContextTooLarge uniqueParameterNodeAtPosition diff --git a/cpp/ql/test/library-tests/dataflow/fields/dataflow-ir-consistency.expected b/cpp/ql/test/library-tests/dataflow/fields/dataflow-ir-consistency.expected index 4b74de5a825..72818427b84 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/dataflow-ir-consistency.expected +++ b/cpp/ql/test/library-tests/dataflow/fields/dataflow-ir-consistency.expected @@ -44,6 +44,8 @@ reverseRead argHasPostUpdate postWithInFlow | realistic.cpp:54:16:54:47 | memcpy output argument | PostUpdateNode should not be the target of local flow. | +| realistic.cpp:54:16:54:47 | memcpy output argument | PostUpdateNode should not be the target of local flow. | +| realistic.cpp:60:16:60:18 | memcpy output argument | PostUpdateNode should not be the target of local flow. | | realistic.cpp:60:16:60:18 | memcpy output argument | PostUpdateNode should not be the target of local flow. | viableImplInCallContextTooLarge uniqueParameterNodeAtPosition diff --git a/cpp/ql/test/library-tests/dataflow/source-sink-tests/remote-flow.expected b/cpp/ql/test/library-tests/dataflow/source-sink-tests/remote-flow.expected index 48de9172b36..24dec225c2e 100644 --- a/cpp/ql/test/library-tests/dataflow/source-sink-tests/remote-flow.expected +++ b/cpp/ql/test/library-tests/dataflow/source-sink-tests/remote-flow.expected @@ -1,2 +1,4 @@ -failures testFailures +| sources-and-sinks.cpp:51:52:51:55 | getaddrinfo output argument | Unexpected result: remote_source=51:52 | +| sources-and-sinks.cpp:51:59:51:76 | // $ remote_source | Missing result:remote_source= | +failures diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected index 017c978bec3..cebf91d6f59 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected @@ -6652,7 +6652,7 @@ WARNING: Module TaintTracking has been deprecated and may be removed in future ( | taint.cpp:744:5:744:10 | buffer | taint.cpp:744:4:744:10 | * ... | TAINT | | taint.cpp:744:14:744:19 | call to source | taint.cpp:744:3:744:21 | ... = ... | | | taint.cpp:745:19:745:25 | call to realloc | taint.cpp:743:40:743:45 | buffer | | -| taint.cpp:745:19:745:25 | call to realloc | taint.cpp:745:3:745:36 | ... = ... | | +| taint.cpp:745:19:745:25 | call to realloc | taint.cpp:745:3:745:37 | ... = ... | | | taint.cpp:745:19:745:25 | call to realloc | taint.cpp:746:10:746:15 | buffer | | | taint.cpp:745:27:745:32 | buffer | taint.cpp:745:19:745:25 | call to realloc | TAINT | | taint.cpp:746:9:746:15 | * ... | taint.cpp:746:8:746:15 | * ... | TAINT | diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp index 6815f45b1b7..eeefa6dd427 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp @@ -743,5 +743,5 @@ void test_realloc() { void test_realloc_2_indirections(int **buffer) { **buffer = source(); buffer = (int**)realloc(buffer, 16); - sink(**buffer); // $ MISSING: ir,ast + sink(**buffer); // $ ir MISSING: ast } \ No newline at end of file From 392b2af9238f89718d471c6ea45324d728adc072 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Thu, 2 Nov 2023 16:51:24 +0000 Subject: [PATCH 015/122] C++: Only the second indirection of the argument should be the remote flow source. --- cpp/ql/lib/semmle/code/cpp/models/implementations/Inet.qll | 2 +- .../dataflow/source-sink-tests/remote-flow.expected | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Inet.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Inet.qll index c0c4537b746..e75c38216f4 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Inet.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Inet.qll @@ -157,7 +157,7 @@ private class Getaddrinfo extends TaintFunction, ArrayFunction, RemoteFlowSource override predicate hasArrayWithNullTerminator(int bufParam) { bufParam in [0, 1] } override predicate hasRemoteFlowSource(FunctionOutput output, string description) { - output.isParameterDeref(3) and + output.isParameterDeref(3, 2) and description = "address returned by " + this.getName() } } diff --git a/cpp/ql/test/library-tests/dataflow/source-sink-tests/remote-flow.expected b/cpp/ql/test/library-tests/dataflow/source-sink-tests/remote-flow.expected index 24dec225c2e..8ec8033d086 100644 --- a/cpp/ql/test/library-tests/dataflow/source-sink-tests/remote-flow.expected +++ b/cpp/ql/test/library-tests/dataflow/source-sink-tests/remote-flow.expected @@ -1,4 +1,2 @@ testFailures -| sources-and-sinks.cpp:51:52:51:55 | getaddrinfo output argument | Unexpected result: remote_source=51:52 | -| sources-and-sinks.cpp:51:59:51:76 | // $ remote_source | Missing result:remote_source= | failures From 2f4eea5a0d8cbdade3ea0e3a9e4791c001951950 Mon Sep 17 00:00:00 2001 From: shati-patel <42641846+shati-patel@users.noreply.github.com> Date: Thu, 2 Nov 2023 17:16:47 +0000 Subject: [PATCH 016/122] Update docs for exploring ASTs --- ...ring-the-structure-of-your-source-code.rst | 14 ++++++++++---- .../add-database-source-to-workspace.png | Bin 0 -> 74597 bytes .../open-source-file.png | Bin 83521 -> 81751 bytes 3 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 docs/codeql/images/codeql-for-visual-studio-code/add-database-source-to-workspace.png 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 b04316f6296..4ee016f2e5e 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 @@ -18,20 +18,26 @@ CodeQL for Visual Studio Code contains an AST viewer. The viewer consists of a g Viewing the abstract syntax tree of a source file -------------------------------------------------- -1. Open a source file from a CodeQL database. For example, you can navigate to a source file in the File Explorer. +1. Open the CodeQL Databases view and right-click the database that you want to explore. Click **Add Database Source to Workspace**. + + .. image:: ../images/codeql-for-visual-studio-code/add-database-source-to-workspace.png + :width: 350 + :alt: Add database source to workspace + +2. Navigate to a source file from a CodeQL database in the File Explorer. .. image:: ../images/codeql-for-visual-studio-code/open-source-file.png :width: 350 :alt: Open a source file -2. Run **CodeQL: View AST** from the Command Palette. This runs a CodeQL query (usually called ``printAST.ql``) over the active file, which may take a few seconds. +3. Run **CodeQL: View AST** from the Command Palette. This runs a CodeQL query (usually called ``printAST.ql``) over the active file, which may take a few seconds. .. 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 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. +4. Once the query has run, the AST viewer displays the structure of the source file. +5. To see the nested structure, click the arrows and expand the nodes. .. image:: ../images/codeql-for-visual-studio-code/explore-ast.png :alt: Explore the AST diff --git a/docs/codeql/images/codeql-for-visual-studio-code/add-database-source-to-workspace.png b/docs/codeql/images/codeql-for-visual-studio-code/add-database-source-to-workspace.png new file mode 100644 index 0000000000000000000000000000000000000000..0f2076a76e081662ad2aea0fe3afb72b2c498592 GIT binary patch literal 74597 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%0D-`zyewjEG4Mv*OIZ3u9qjha|k>j4M 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�@J(tRj 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

    yiFyq_KUV!3=EMxNXeGVxu*66zW9+; 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őE_{*@$bH;TUN5({tV3!M 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 IQN!T>18$7LAOHXW literal 83521 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

    _dO^O3|WSg<_x`0-V@T9c7TE&ozz=I~%53 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 Date: Thu, 2 Nov 2023 17:17:02 +0000 Subject: [PATCH 017/122] Update docs for customizing settings --- .../customizing-settings.rst | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/codeql/codeql-for-visual-studio-code/customizing-settings.rst b/docs/codeql/codeql-for-visual-studio-code/customizing-settings.rst index 7cbe816cf1c..9ddc83e2e15 100644 --- a/docs/codeql/codeql-for-visual-studio-code/customizing-settings.rst +++ b/docs/codeql/codeql-for-visual-studio-code/customizing-settings.rst @@ -39,7 +39,7 @@ Changing the labels of query history items The query history **Format** setting controls how the extension lists queries in the query history. By default, each item has a label with the following format:: - %q on %d - %s, %r result count [%t] + %q on %d - %s %r [%t] - ``%q`` is the query name - ``%d`` is the database name @@ -107,6 +107,19 @@ You can also edit the items shown in the Variant Analysis Repositories panel by You can change the items shown in the panel or add new items by directly editing this file. +Configuring settings for downloading databases +------------------------------------------------ + +To automatically add database source folders to your workspace, you can check the **Database Download > Add Database Source to Workspace** setting. + +This setting is disabled by default. You may want to enable the setting if you regularly browse the source code of databases, for example to view the abstract syntax tree of the code. For more information, see ":ref:`Exploring the structure of your source code `." + +.. pull-quote:: Note + + If you are in a single-folder workspace, adding database source folders will cause the workspace to reload as a multi-root workspace. This may cause query history and database lists to be reset. + + Before enabling this setting, we recommend that you save your workspace as a multi-root workspace. For more information, see ""`Multi-root Workspaces `__" in the Visual Studio Code help. + Configuring settings for testing queries locally ------------------------------------------------ From 387a241efdc901270389cdf663960a53cd89b0f2 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 9 Oct 2023 13:37:34 +0200 Subject: [PATCH 018/122] C#: Set output verbosity to normal for both solution and project restore (needed to identify where assets file are located). --- .../Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs | 3 +-- csharp/extractor/Semmle.Extraction.Tests/DotNet.cs | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs index 52c56b2ad0f..3f1f7aa59d0 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs @@ -42,7 +42,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching private string GetRestoreArgs(string projectOrSolutionFile, string packageDirectory, bool forceDotnetRefAssemblyFetching) { - var args = $"restore --no-dependencies \"{projectOrSolutionFile}\" --packages \"{packageDirectory}\" /p:DisableImplicitNuGetFallbackFolder=true"; + var args = $"restore --no-dependencies \"{projectOrSolutionFile}\" --packages \"{packageDirectory}\" /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal"; if (forceDotnetRefAssemblyFetching) { @@ -74,7 +74,6 @@ namespace Semmle.Extraction.CSharp.DependencyFetching public bool RestoreSolutionToDirectory(string solutionFile, string packageDirectory, bool forceDotnetRefAssemblyFetching, out IEnumerable projects) { var args = GetRestoreArgs(solutionFile, packageDirectory, forceDotnetRefAssemblyFetching); - args += " --verbosity normal"; if (dotnetCliInvoker.RunCommand(args, out var output)) { var regex = RestoreProjectRegex(); diff --git a/csharp/extractor/Semmle.Extraction.Tests/DotNet.cs b/csharp/extractor/Semmle.Extraction.Tests/DotNet.cs index 491be3ef137..44d3acb7338 100644 --- a/csharp/extractor/Semmle.Extraction.Tests/DotNet.cs +++ b/csharp/extractor/Semmle.Extraction.Tests/DotNet.cs @@ -103,7 +103,7 @@ namespace Semmle.Extraction.Tests // Verify var lastArgs = dotnetCliInvoker.GetLastArgs(); - Assert.Equal("restore --no-dependencies \"myproject.csproj\" --packages \"mypackages\" /p:DisableImplicitNuGetFallbackFolder=true", lastArgs); + Assert.Equal("restore --no-dependencies \"myproject.csproj\" --packages \"mypackages\" /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal", lastArgs); } [Fact] @@ -118,7 +118,7 @@ namespace Semmle.Extraction.Tests // Verify var lastArgs = dotnetCliInvoker.GetLastArgs(); - Assert.Equal("restore --no-dependencies \"myproject.csproj\" --packages \"mypackages\" /p:DisableImplicitNuGetFallbackFolder=true --configfile \"myconfig.config\"", lastArgs); + Assert.Equal("restore --no-dependencies \"myproject.csproj\" --packages \"mypackages\" /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --configfile \"myconfig.config\"", lastArgs); } [Fact] From 3a7df994cb50f45ebea62facf0fea234ae0e0852 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 9 Oct 2023 15:42:28 +0200 Subject: [PATCH 019/122] C#: The dependency manager should find assets.json files when doing a project or solution restore. --- .../DependencyManager.cs | 14 +++---- .../DotNet.cs | 41 +++++++++++-------- .../IDotNet.cs | 4 +- 3 files changed, 34 insertions(+), 25 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index 2021411be0f..34c7b8550ce 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -623,11 +623,11 @@ namespace Semmle.Extraction.CSharp.DependencyFetching } - private bool RestoreProject(string project, bool forceDotnetRefAssemblyFetching, string? pathToNugetConfig = null) => - dotnet.RestoreProjectToDirectory(project, packageDirectory.DirInfo.FullName, forceDotnetRefAssemblyFetching, pathToNugetConfig); + private bool RestoreProject(string project, bool forceDotnetRefAssemblyFetching, out IEnumerable assets, string? pathToNugetConfig = null) => + dotnet.RestoreProjectToDirectory(project, packageDirectory.DirInfo.FullName, forceDotnetRefAssemblyFetching, out assets, pathToNugetConfig); - private bool RestoreSolution(string solution, out IEnumerable projects) => - dotnet.RestoreSolutionToDirectory(solution, packageDirectory.DirInfo.FullName, forceDotnetRefAssemblyFetching: true, out projects); + private bool RestoreSolution(string solution, out IEnumerable projects, out IEnumerable assets) => + dotnet.RestoreSolutionToDirectory(solution, packageDirectory.DirInfo.FullName, forceDotnetRefAssemblyFetching: true, out projects, out assets); /// /// Executes `dotnet restore` on all solution files in solutions. @@ -640,7 +640,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching private IEnumerable RestoreSolutions(IEnumerable solutions) => solutions.SelectMany(solution => { - RestoreSolution(solution, out var restoredProjects); + RestoreSolution(solution, out var restoredProjects, out var assets); return restoredProjects; }); @@ -653,7 +653,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching { Parallel.ForEach(projects, new ParallelOptions { MaxDegreeOfParallelism = options.Threads }, project => { - RestoreProject(project, forceDotnetRefAssemblyFetching: true); + RestoreProject(project, forceDotnetRefAssemblyFetching: true, out var assets); }); } @@ -698,7 +698,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching return; } - success = RestoreProject(tempDir.DirInfo.FullName, forceDotnetRefAssemblyFetching: false, pathToNugetConfig: nugetConfig); + success = RestoreProject(tempDir.DirInfo.FullName, forceDotnetRefAssemblyFetching: false, out var _, pathToNugetConfig: nugetConfig); // TODO: the restore might fail, we could retry with a prerelease (*-* instead of *) version of the package. if (!success) { diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs index 3f1f7aa59d0..e8493a770db 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs @@ -60,7 +60,19 @@ namespace Semmle.Extraction.CSharp.DependencyFetching return args; } - public bool RestoreProjectToDirectory(string projectFile, string packageDirectory, bool forceDotnetRefAssemblyFetching, string? pathToNugetConfig = null) + private static IEnumerable GetFirstGroupOnMatch(Regex regex, IEnumerable lines) => + lines + .Select(line => regex.Match(line)) + .Where(match => match.Success) + .Select(match => match.Groups[1].Value); + + private static IEnumerable GetAssetsFilePaths(IEnumerable lines) => + GetFirstGroupOnMatch(AssetsFileRegex(), lines); + + private static IEnumerable GetRestoredProjects(IEnumerable lines) => + GetFirstGroupOnMatch(RestoredProjectRegex(), lines); + + public bool RestoreProjectToDirectory(string projectFile, string packageDirectory, bool forceDotnetRefAssemblyFetching, out IEnumerable assets, string? pathToNugetConfig = null) { var args = GetRestoreArgs(projectFile, packageDirectory, forceDotnetRefAssemblyFetching); if (pathToNugetConfig != null) @@ -68,24 +80,18 @@ namespace Semmle.Extraction.CSharp.DependencyFetching args += $" --configfile \"{pathToNugetConfig}\""; } - return dotnetCliInvoker.RunCommand(args); + var success = dotnetCliInvoker.RunCommand(args, out var output); + assets = success ? GetAssetsFilePaths(output) : Array.Empty(); + return success; } - public bool RestoreSolutionToDirectory(string solutionFile, string packageDirectory, bool forceDotnetRefAssemblyFetching, out IEnumerable projects) + public bool RestoreSolutionToDirectory(string solutionFile, string packageDirectory, bool forceDotnetRefAssemblyFetching, out IEnumerable projects, out IEnumerable assets) { var args = GetRestoreArgs(solutionFile, packageDirectory, forceDotnetRefAssemblyFetching); - if (dotnetCliInvoker.RunCommand(args, out var output)) - { - var regex = RestoreProjectRegex(); - projects = output - .Select(line => regex.Match(line)) - .Where(match => match.Success) - .Select(match => match.Groups[1].Value); - return true; - } - - projects = Array.Empty(); - return false; + var success = dotnetCliInvoker.RunCommand(args, out var output); + projects = success ? GetRestoredProjects(output) : Array.Empty(); + assets = success ? GetAssetsFilePaths(output) : Array.Empty(); + return success; } public bool New(string folder) @@ -120,6 +126,9 @@ namespace Semmle.Extraction.CSharp.DependencyFetching } [GeneratedRegex("Restored\\s+(.+\\.csproj)", RegexOptions.Compiled)] - private static partial Regex RestoreProjectRegex(); + private static partial Regex RestoredProjectRegex(); + + [GeneratedRegex("[Assets\\sfile\\shas\\snot\\schanged.\\sSkipping\\sassets\\sfile\\swriting.|Writing\\sassets\\sfile\\sto\\sdisk.]\\sPath:\\s(.*)", RegexOptions.Compiled)] + private static partial Regex AssetsFileRegex(); } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs index 6211fde32ad..3d752ec3456 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs @@ -4,8 +4,8 @@ namespace Semmle.Extraction.CSharp.DependencyFetching { internal interface IDotNet { - bool RestoreProjectToDirectory(string project, string directory, bool forceDotnetRefAssemblyFetching, string? pathToNugetConfig = null); - bool RestoreSolutionToDirectory(string solutionFile, string packageDirectory, bool forceDotnetRefAssemblyFetching, out IEnumerable projects); + bool RestoreProjectToDirectory(string project, string directory, bool forceDotnetRefAssemblyFetching, out IEnumerable assets, string? pathToNugetConfig = null); + bool RestoreSolutionToDirectory(string solutionFile, string packageDirectory, bool forceDotnetRefAssemblyFetching, out IEnumerable projects, out IEnumerable assets); bool New(string folder); bool AddPackage(string folder, string package); IList GetListedRuntimes(); From c6c00e71790e4c5b749fccabaa3e3dc36a616681 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 9 Oct 2023 15:42:54 +0200 Subject: [PATCH 020/122] C#: Add tests cases for parsing dotnet restore output to find assets.json files. --- .../Semmle.Extraction.Tests/DotNet.cs | 19 ++++++++++++++----- .../Semmle.Extraction.Tests/Runtime.cs | 9 +++++++-- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.Tests/DotNet.cs b/csharp/extractor/Semmle.Extraction.Tests/DotNet.cs index 44d3acb7338..6fe91b22a87 100644 --- a/csharp/extractor/Semmle.Extraction.Tests/DotNet.cs +++ b/csharp/extractor/Semmle.Extraction.Tests/DotNet.cs @@ -43,9 +43,11 @@ namespace Semmle.Extraction.Tests private static IList MakeDotnetRestoreOutput() => new List { " Determining projects to restore...", + " Writing assets file to disk. Path: /path/to/project.assets.json", " Restored /path/to/project.csproj (in 1.23 sec).", " Other output...", " More output...", + " Assets file has not changed. Skipping assets file writing. Path: /path/to/project2.assets.json", " Restored /path/to/project2.csproj (in 4.56 sec).", " Other output...", }; @@ -99,7 +101,7 @@ namespace Semmle.Extraction.Tests var dotnet = MakeDotnet(dotnetCliInvoker); // Execute - dotnet.RestoreProjectToDirectory("myproject.csproj", "mypackages", false); + dotnet.RestoreProjectToDirectory("myproject.csproj", "mypackages", false, out var assets); // Verify var lastArgs = dotnetCliInvoker.GetLastArgs(); @@ -110,15 +112,18 @@ namespace Semmle.Extraction.Tests public void TestDotnetRestoreProjectToDirectory2() { // Setup - var dotnetCliInvoker = new DotNetCliInvokerStub(new List()); + var dotnetCliInvoker = new DotNetCliInvokerStub(MakeDotnetRestoreOutput()); var dotnet = MakeDotnet(dotnetCliInvoker); // Execute - dotnet.RestoreProjectToDirectory("myproject.csproj", "mypackages", false, "myconfig.config"); + dotnet.RestoreProjectToDirectory("myproject.csproj", "mypackages", false, out var assets, "myconfig.config"); // Verify var lastArgs = dotnetCliInvoker.GetLastArgs(); Assert.Equal("restore --no-dependencies \"myproject.csproj\" --packages \"mypackages\" /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --configfile \"myconfig.config\"", lastArgs); + Assert.Equal(2, assets.Count()); + Assert.Contains("/path/to/project.assets.json", assets); + Assert.Contains("/path/to/project2.assets.json", assets); } [Fact] @@ -129,7 +134,7 @@ namespace Semmle.Extraction.Tests var dotnet = MakeDotnet(dotnetCliInvoker); // Execute - dotnet.RestoreSolutionToDirectory("mysolution.sln", "mypackages", false, out var projects); + dotnet.RestoreSolutionToDirectory("mysolution.sln", "mypackages", false, out var projects, out var assets); // Verify var lastArgs = dotnetCliInvoker.GetLastArgs(); @@ -137,6 +142,9 @@ namespace Semmle.Extraction.Tests Assert.Equal(2, projects.Count()); Assert.Contains("/path/to/project.csproj", projects); Assert.Contains("/path/to/project2.csproj", projects); + Assert.Equal(2, assets.Count()); + Assert.Contains("/path/to/project.assets.json", assets); + Assert.Contains("/path/to/project2.assets.json", assets); } [Fact] @@ -148,12 +156,13 @@ namespace Semmle.Extraction.Tests dotnetCliInvoker.Success = false; // Execute - dotnet.RestoreSolutionToDirectory("mysolution.sln", "mypackages", false, out var projects); + dotnet.RestoreSolutionToDirectory("mysolution.sln", "mypackages", false, out var projects, out var assets); // Verify var lastArgs = dotnetCliInvoker.GetLastArgs(); Assert.Equal("restore --no-dependencies \"mysolution.sln\" --packages \"mypackages\" /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal", lastArgs); Assert.Empty(projects); + Assert.Empty(assets); } [Fact] diff --git a/csharp/extractor/Semmle.Extraction.Tests/Runtime.cs b/csharp/extractor/Semmle.Extraction.Tests/Runtime.cs index bb6d5ed4307..8c7a8a1b3e1 100644 --- a/csharp/extractor/Semmle.Extraction.Tests/Runtime.cs +++ b/csharp/extractor/Semmle.Extraction.Tests/Runtime.cs @@ -19,11 +19,16 @@ namespace Semmle.Extraction.Tests public bool New(string folder) => true; - public bool RestoreProjectToDirectory(string project, string directory, bool forceDotnetRefAssemblyFetching, string? pathToNugetConfig = null) => true; + public bool RestoreProjectToDirectory(string project, string directory, bool forceDotnetRefAssemblyFetching, out IEnumerable assets, string? pathToNugetConfig = null) + { + assets = Array.Empty(); + return true; + } - public bool RestoreSolutionToDirectory(string solution, string directory, bool forceDotnetRefAssemblyFetching, out IEnumerable projects) + public bool RestoreSolutionToDirectory(string solution, string directory, bool forceDotnetRefAssemblyFetching, out IEnumerable projects, out IEnumerable assets) { projects = Array.Empty(); + assets = Array.Empty(); return true; } From 7bbf1a24d4082f0325bc6f0af21845d3ba7c6617 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 11 Oct 2023 09:32:39 +0200 Subject: [PATCH 021/122] C#: Add assets.json parser. --- .../Assets.cs | 169 ++++++++++++++++++ .../Semmle.Util/IEnumerableExtensions.cs | 6 + 2 files changed, 175 insertions(+) create mode 100644 csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs new file mode 100644 index 00000000000..8a5c533f676 --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs @@ -0,0 +1,169 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using Newtonsoft.Json.Linq; + +namespace Semmle.Extraction.CSharp.DependencyFetching +{ + /// + /// Class for parsing project.assets.json files. + /// + internal class Assets + { + private readonly ProgressMonitor progressMonitor; + + private static readonly string[] netFrameworks = new[] { + "microsoft.aspnetcore.app.ref", + "microsoft.netcore.app.ref", + "microsoft.netframework.referenceassemblies", + "microsoft.windowsdesktop.app.ref", + "netstandard.library.ref" + }; + + + internal Assets(ProgressMonitor progressMonitor) + { + this.progressMonitor = progressMonitor; + } + + /// + /// In most cases paths in asset files point to dll's or the empty _._ file, which + /// is sometimes there to avoid the directory being empty. + /// That is, if the path specifically adds a .dll we use that, otherwise we as a fallback + /// add the entire directory (which should be fine in case of _._ as well). + /// + private static string ParseFilePath(string path) + { + if (path.EndsWith(".dll")) + { + return path; + } + return Path.GetDirectoryName(path) ?? path; + } + + /// + /// Class needed for deserializing parts of an assets file. + /// It holds information about a reference. + /// + private class ReferenceInfo + { + /// + /// This carries the type of the reference. + /// We are only interested in package references. + /// + public string Type { get; set; } = ""; + + /// + /// If not a .NET framework reference we assume that only the files mentioned + /// in the compile section are needed for compilation. + /// + public Dictionary Compile { get; set; } = new(); + } + + /// + /// Gets the package dependencies from the assets file. + /// + /// Parse a part of the JSon assets file and returns the paths + /// to the dependencies required for compilation. + /// + /// Example: + /// { + /// "Castle.Core/4.4.1": { + /// "type": "package", + /// "compile": { + /// "lib/netstandard1.5/Castle.Core.dll": { + /// "related": ".xml" + /// } + /// } + /// }, + /// "Json.Net/1.0.33": { + /// "type": "package", + /// "compile": { + /// "lib/netstandard2.0/Json.Net.dll": {} + /// }, + /// "runtime": { + /// "lib/netstandard2.0/Json.Net.dll": {} + /// } + /// } + /// } + /// + /// Returns { + /// "castle.core/4.4.1/lib/netstandard1.5/Castle.Core.dll", + /// "json.net/1.0.33/lib/netstandard2.0/Json.Net.dll" + /// } + /// + private IEnumerable GetPackageDependencies(JObject json) + { + // If there are more than one framework we need to pick just one. + // To ensure stability we pick one based on the lexicographic order of + // the framework names. + var references = json + .GetProperty("targets")? + .Properties()? + .MaxBy(p => p.Name)? + .Value + .ToObject>(); + + if (references is null) + { + progressMonitor.LogDebug("No references found in the targets section in the assets file."); + return Array.Empty(); + } + + // Find all the compile dependencies for each reference and + // create the relative path to the dependency. + var dependencies = references + .SelectMany(r => + { + var info = r.Value; + var name = r.Key.ToLowerInvariant(); + if (info.Type != "package") + { + return Array.Empty(); + } + + // If this is a .NET framework reference then include everything. + return netFrameworks.Any(framework => name.StartsWith(framework)) + ? new[] { name } + : info + .Compile + .Select(p => Path.Combine(name, ParseFilePath(p.Key))); + }) + .ToList(); + + return dependencies; + } + + /// + /// Parse `json` as project.assets.json content and populate `dependencies` with the + /// relative paths to the dependencies required for compilation. + /// + /// True if parsing succeeds, otherwise false. + public bool TryParse(string json, out IEnumerable dependencies) + { + dependencies = Array.Empty(); + + try + { + var obj = JObject.Parse(json); + var packages = GetPackageDependencies(obj); + + dependencies = packages.ToList(); + + return true; + } + catch (Exception e) + { + progressMonitor.LogDebug($"Failed to parse assets file (unexpected error): {e.Message}"); + return false; + } + } + } + + internal static class JsonExtensions + { + internal static JObject? GetProperty(this JObject json, string property) => + json[property] as JObject; + } +} diff --git a/csharp/extractor/Semmle.Util/IEnumerableExtensions.cs b/csharp/extractor/Semmle.Util/IEnumerableExtensions.cs index 4e40288d88c..1ca676f0ce6 100644 --- a/csharp/extractor/Semmle.Util/IEnumerableExtensions.cs +++ b/csharp/extractor/Semmle.Util/IEnumerableExtensions.cs @@ -113,5 +113,11 @@ namespace Semmle.Util h = h * 7 + i.GetHashCode(); return h; } + + /// + /// Returns the sequence with nulls removed. + /// + public static IEnumerable WhereNotNull(this IEnumerable items) where T : class => + items.Where(i => i is not null)!; } } From f8d427336e21158c96e65c1dd6c961e5fe2f316d Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 11 Oct 2023 13:20:38 +0200 Subject: [PATCH 022/122] C#: Add assets parsing unit test. --- .../Semmle.Extraction.Tests/Assets.cs | 187 ++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 csharp/extractor/Semmle.Extraction.Tests/Assets.cs diff --git a/csharp/extractor/Semmle.Extraction.Tests/Assets.cs b/csharp/extractor/Semmle.Extraction.Tests/Assets.cs new file mode 100644 index 00000000000..56377bfbd7c --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.Tests/Assets.cs @@ -0,0 +1,187 @@ +using Xunit; +using System.Linq; +using Semmle.Extraction.CSharp.DependencyFetching; + +namespace Semmle.Extraction.Tests +{ + public class AssetsTests + { + private static string FixExpectedPathOnWindows(string path) => path.Replace('\\', '/'); + + [Fact] + public void TestAssets1() + { + // Setup + var assets = new Assets(new ProgressMonitor(new LoggerStub())); + var json = assetsJson1; + + // Execute + var success = assets.TryParse(json, out var dependencies); + + // Verify + Assert.True(success); + Assert.Equal(4, dependencies.Count()); + + var normalizedPaths = dependencies.Select(FixExpectedPathOnWindows); + // Packages references + Assert.Contains("castle.core/4.4.1/lib/netstandard1.5/Castle.Core.dll", normalizedPaths); + Assert.Contains("json.net/1.0.33/lib/netstandard2.0/Json.Net.dll", normalizedPaths); + Assert.Contains("microsoft.aspnetcore.cryptography.internal/6.0.8/lib/net6.0/Microsoft.AspNetCore.Cryptography.Internal.dll", normalizedPaths); + Assert.Contains("humanizer.core/2.8.26/lib/netstandard2.0", normalizedPaths); + } + + [Fact] + public void TestAssets2() + { + // Setup + var assets = new Assets(new ProgressMonitor(new LoggerStub())); + var json = assetsJson2; + + // Execute + var success = assets.TryParse(json, out var dependencies); + + // Verify + Assert.True(success); + Assert.Equal(2, dependencies.Count()); + Assert.Contains("microsoft.netframework.referenceassemblies/1.0.3", dependencies); + Assert.Contains("microsoft.netframework.referenceassemblies.net48/1.0.3", dependencies); + } + + [Fact] + public void TestAssets3() + { + // Setup + var assets = new Assets(new ProgressMonitor(new LoggerStub())); + var json = "garbage data"; + + // Execute + var success = assets.TryParse(json, out var dependencies); + + // Verify + Assert.False(success); + Assert.Empty(dependencies); + } + + private readonly string assetsJson1 = """ +{ + "version": 3, + "targets": { + "net7.0": { + "Castle.Core/4.4.1": { + "type": "package", + "dependencies": { + "NETStandard.Library": "1.6.1", + "System.Collections.Specialized": "4.3.0", + }, + "compile": { + "lib/netstandard1.5/Castle.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.5/Castle.Core.dll": { + "related": ".xml" + } + } + }, + "Json.Net/1.0.33": { + "type": "package", + "compile": { + "lib/netstandard2.0/Json.Net.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Json.Net.dll": {} + } + }, + "MessagePackAnalyzer/2.1.152": { + "type": "package" + }, + "Microsoft.AspNetCore.Cryptography.Internal/6.0.8": { + "type": "package", + "compile": { + "lib/net6.0/Microsoft.AspNetCore.Cryptography.Internal.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Microsoft.AspNetCore.Cryptography.Internal.dll": { + "related": ".xml" + } + } + }, + "Humanizer.Core/2.8.26": { + "type": "package", + "compile": { + "lib/netstandard2.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Humanizer.dll": { + "related": ".xml" + } + } + }, + "Nop.Core/4.5.0": { + "type": "project", + "compile": { + "bin/placeholder/Nop.Core.dll": {} + }, + "runtime": { + "bin/placeholder/Nop.Core.dll": {} + } + }, + } + }, + "project": { + "version": "1.0.0", + "frameworks": { + "net7.0": { + "targetAlias": "net7.0", + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[7.0.2, 7.0.2]" + }, + { + "name": "Microsoft.NETCore.App.Ref", + "version": "[7.0.2, 7.0.2]" + } + ], + "frameworkReferences": { + "Microsoft.AspNetCore.App": { + "privateAssets": "none" + }, + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + } + } + } + } +} +"""; + + private readonly string assetsJson2 = """ +{ + "version": 3, + "targets": { + ".NETFramework,Version=v4.8": { + "Microsoft.NETFramework.ReferenceAssemblies/1.0.3": { + "type": "package", + "dependencies": { + "Microsoft.NETFramework.ReferenceAssemblies.net48": "1.0.3" + } + }, + "Microsoft.NETFramework.ReferenceAssemblies.net48/1.0.3": { + "type": "package", + "build": { + "build/Microsoft.NETFramework.ReferenceAssemblies.net48.targets": {} + } + } + } + } +} +"""; + } +} From 4cebb7e848594c178c226e4b3b5d00e789674e22 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Thu, 12 Oct 2023 09:55:41 +0200 Subject: [PATCH 023/122] C#: Integrate the assets parsing and fetching in the dependency manager. --- .../Assets.cs | 10 ++ .../DependencyManager.cs | 161 +++++++++--------- 2 files changed, 92 insertions(+), 79 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs index 8a5c533f676..9d1dc3fc774 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs @@ -159,6 +159,16 @@ namespace Semmle.Extraction.CSharp.DependencyFetching return false; } } + + public static IEnumerable GetCompilationDependencies(ProgressMonitor progressMonitor, IEnumerable assets) + { + var parser = new Assets(progressMonitor); + return assets.SelectMany(asset => + { + var json = File.ReadAllText(asset); + return parser.TryParse(json, out var dependencies) ? dependencies : Array.Empty(); + }); + } } internal static class JsonExtensions diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index 34c7b8550ce..10cbc2e72d2 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -34,6 +34,9 @@ namespace Semmle.Extraction.CSharp.DependencyFetching private readonly TemporaryDirectory tempWorkingDirectory; private readonly bool cleanupTempWorkingDirectory; + private readonly Lazy runtimeLazy; + private Runtime Runtime => runtimeLazy.Value; + /// /// Performs C# dependency fetching. /// @@ -53,6 +56,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching try { this.dotnet = DotNet.Make(options, progressMonitor, tempWorkingDirectory); + runtimeLazy = new Lazy(() => new Runtime(dotnet)); } catch { @@ -80,7 +84,6 @@ namespace Semmle.Extraction.CSharp.DependencyFetching if (options.UseNuGet) { - dllDirNames.Add(packageDirectory.DirInfo.FullName); try { var nuget = new NugetPackages(sourceDir.FullName, packageDirectory, progressMonitor); @@ -91,37 +94,27 @@ namespace Semmle.Extraction.CSharp.DependencyFetching progressMonitor.MissingNuGet(); } - var restoredProjects = RestoreSolutions(solutions); + var restoredProjects = RestoreSolutions(solutions, out var assets1); var projects = allProjects.Except(restoredProjects); - RestoreProjects(projects); + RestoreProjects(projects, out var assets2); + + var dependencies = Assets.GetCompilationDependencies(progressMonitor, assets1.Union(assets2)); + + var paths = dependencies + .Select(d => Path.Combine(packageDirectory.DirInfo.FullName, d)) + .ToList(); + + // TODO: Rename the dllDirNames var - it's not only dirs anymore. + dllDirNames.AddRange(paths); DownloadMissingPackages(allNonBinaryFiles); } - var existsNetCoreRefNugetPackage = false; - var existsNetFrameworkRefNugetPackage = false; - var existsNetstandardLibRefNugetPackage = false; - var existsNetstandardLibNugetPackage = false; - // Find DLLs in the .Net / Asp.Net Framework // This block needs to come after the nuget restore, because the nuget restore might fetch the .NET Core/Framework reference assemblies. if (options.ScanNetFrameworkDlls) { - existsNetCoreRefNugetPackage = IsNugetPackageAvailable("microsoft.netcore.app.ref"); - existsNetFrameworkRefNugetPackage = IsNugetPackageAvailable("microsoft.netframework.referenceassemblies"); - existsNetstandardLibRefNugetPackage = IsNugetPackageAvailable("netstandard.library.ref"); - existsNetstandardLibNugetPackage = IsNugetPackageAvailable("netstandard.library"); - - if (existsNetCoreRefNugetPackage - || existsNetFrameworkRefNugetPackage - || existsNetstandardLibRefNugetPackage - || existsNetstandardLibNugetPackage) - { - progressMonitor.LogInfo("Found .NET Core/Framework DLLs in NuGet packages. Not adding installation directory."); - } - else - { - AddNetFrameworkDlls(dllDirNames); - } + AddNetFrameworkDlls(dllDirNames); + AddAspNetFrameworkDlls(dllDirNames); } assemblyCache = new AssemblyCache(dllDirNames, progressMonitor); @@ -132,7 +125,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching UseReference(filename); } - RemoveUnnecessaryNugetPackages(existsNetCoreRefNugetPackage, existsNetFrameworkRefNugetPackage, existsNetstandardLibRefNugetPackage, existsNetstandardLibNugetPackage); + RemoveUnnecessaryNugetPackages(); ResolveConflicts(); // Output the findings @@ -167,8 +160,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching DateTime.Now - startTime); } - private void RemoveUnnecessaryNugetPackages(bool existsNetCoreRefNugetPackage, bool existsNetFrameworkRefNugetPackage, - bool existsNetstandardLibRefNugetPackage, bool existsNetstandardLibNugetPackage) + private void RemoveUnnecessaryNugetPackages() { RemoveNugetAnalyzerReferences(); RemoveRuntimeNugetPackageReferences(); @@ -180,40 +172,6 @@ namespace Semmle.Extraction.CSharp.DependencyFetching RemoveNugetPackageReference("microsoft.aspnetcore.app.ref"); } - // Multiple dotnet framework packages could be present. We keep only one. - // The order of the packages is important, we're keeping the first one that is present in the nuget cache. - var packagesInPrioOrder = new (bool isPresent, string prefix)[] - { - // net7.0, ... net5.0, netcoreapp3.1, netcoreapp3.0 - (existsNetCoreRefNugetPackage, "microsoft.netcore.app.ref"), - // net48, ..., net20 - (existsNetFrameworkRefNugetPackage, "microsoft.netframework.referenceassemblies."), - // netstandard2.1 - (existsNetstandardLibRefNugetPackage, "netstandard.library.ref"), - // netstandard2.0 - (existsNetstandardLibNugetPackage, "netstandard.library") - }; - - for (var i = 0; i < packagesInPrioOrder.Length; i++) - { - var (isPresent, _) = packagesInPrioOrder[i]; - if (!isPresent) - { - continue; - } - - // Package is present, remove all the lower priority packages: - for (var j = i + 1; j < packagesInPrioOrder.Length; j++) - { - var (otherIsPresent, otherPrefix) = packagesInPrioOrder[j]; - if (otherIsPresent) - { - RemoveNugetPackageReference(otherPrefix); - } - } - break; - } - // TODO: There could be multiple `microsoft.netframework.referenceassemblies` packages, // we could keep the newest one, but this is covered by the conflict resolution logic // (if the file names match) @@ -258,35 +216,68 @@ namespace Semmle.Extraction.CSharp.DependencyFetching } } } + private void AddNetFrameworkDlls(List dllDirNames) { - var runtime = new Runtime(dotnet); + // Multiple dotnet framework packages could be present. + // The order of the packages is important, we're adding the first one that is present in the nuget cache. + var packagesInPrioOrder = new string[] + { + "microsoft.netcore.app.ref", // net7.0, ... net5.0, netcoreapp3.1, netcoreapp3.0 + "microsoft.netframework.referenceassemblies.", // net48, ..., net20 + "netstandard.library.ref", // netstandard2.1 + "netstandard.library" // netstandard2.0 + }; + + var frameworkPath = packagesInPrioOrder + .Select(GetPackageDirectory) + .FirstOrDefault(dir => dir is not null); + + if (frameworkPath is not null) + { + dllDirNames.Add(frameworkPath); + progressMonitor.LogInfo("Found .NET Core/Framework DLLs in NuGet packages. Not adding installation directory."); + return; + } + string? runtimeLocation = null; if (options.UseSelfContainedDotnet) { - runtimeLocation = runtime.ExecutingRuntime; + runtimeLocation = Runtime.ExecutingRuntime; } else if (fileContent.IsNewProjectStructureUsed) { - runtimeLocation = runtime.NetCoreRuntime; + runtimeLocation = Runtime.NetCoreRuntime; } else if (fileContent.IsLegacyProjectStructureUsed) { - runtimeLocation = runtime.DesktopRuntime; + runtimeLocation = Runtime.DesktopRuntime; } - runtimeLocation ??= runtime.ExecutingRuntime; + runtimeLocation ??= Runtime.ExecutingRuntime; progressMonitor.LogInfo($".NET runtime location selected: {runtimeLocation}"); dllDirNames.Add(runtimeLocation); + } - if (fileContent.IsNewProjectStructureUsed - && fileContent.UseAspNetCoreDlls - && runtime.AspNetCoreRuntime is string aspRuntime) + private void AddAspNetFrameworkDlls(List dllDirNames) + { + if (!fileContent.IsNewProjectStructureUsed || !fileContent.UseAspNetCoreDlls) { - progressMonitor.LogInfo($"ASP.NET runtime location selected: {aspRuntime}"); - dllDirNames.Add(aspRuntime); + return; + } + + // First try to find ASP.NET assemblies in the NuGet packages + if (GetPackageDirectory("microsoft.aspnetcore.app.ref") is string aspNetCorePackage) + { + progressMonitor.LogInfo($"Found ASP.NET Core in NuGet packages. Not adding installation directory."); + dllDirNames.Add(aspNetCorePackage); + } + else if (Runtime.AspNetCoreRuntime is string aspNetCoreRuntime) + { + progressMonitor.LogInfo($"ASP.NET runtime location selected: {aspNetCoreRuntime}"); + dllDirNames.Add(aspNetCoreRuntime); } } @@ -336,16 +327,17 @@ namespace Semmle.Extraction.CSharp.DependencyFetching } } - private bool IsNugetPackageAvailable(string packagePrefix) + private string? GetPackageDirectory(string packagePrefix) { if (!options.UseNuGet) { - return false; + return null; } return new DirectoryInfo(packageDirectory.DirInfo.FullName) .EnumerateDirectories(packagePrefix + "*", new EnumerationOptions { MatchCasing = MatchCasing.CaseInsensitive, RecurseSubdirectories = false }) - .Any(); + .FirstOrDefault()? + .FullName; } private void GenerateSourceFileFromImplicitUsings() @@ -634,27 +626,38 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// As opposed to RestoreProjects this is not run in parallel using PLINQ /// as `dotnet restore` on a solution already uses multiple threads for restoring /// the projects (this can be disabled with the `--disable-parallel` flag). + /// Populates assets with the relative paths to the assets files generated by the restore. /// Returns a list of projects that are up to date with respect to restore. /// /// A list of paths to solution files. - private IEnumerable RestoreSolutions(IEnumerable solutions) => - solutions.SelectMany(solution => + private IEnumerable RestoreSolutions(IEnumerable solutions, out IEnumerable assets) + { + var assetFiles = new List(); + var projects = solutions.SelectMany(solution => { - RestoreSolution(solution, out var restoredProjects, out var assets); + RestoreSolution(solution, out var restoredProjects, out var a); + assetFiles.AddRange(a); return restoredProjects; }); + assets = assetFiles; + return projects; + } /// /// Executes `dotnet restore` on all projects in projects. /// This is done in parallel for performance reasons. + /// Populates assets with the relative paths to the assets files generated by the restore. /// /// A list of paths to project files. - private void RestoreProjects(IEnumerable projects) + private void RestoreProjects(IEnumerable projects, out IEnumerable assets) { + var assetFiles = new List(); Parallel.ForEach(projects, new ParallelOptions { MaxDegreeOfParallelism = options.Threads }, project => { - RestoreProject(project, forceDotnetRefAssemblyFetching: true, out var assets); + RestoreProject(project, forceDotnetRefAssemblyFetching: true, out var a); + assetFiles.AddRange(a); }); + assets = assetFiles; } private void DownloadMissingPackages(List allFiles) From 576eda3ec6bb76ddd4902bf2e5a9c0e88835de8c Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Thu, 2 Nov 2023 08:39:16 +0100 Subject: [PATCH 024/122] C#: Add missing package directory to included dlls. --- .../DependencyManager.cs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index 10cbc2e72d2..0516f39bc38 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -31,6 +31,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching private readonly IDotNet dotnet; private readonly FileContent fileContent; private readonly TemporaryDirectory packageDirectory; + private readonly TemporaryDirectory missingPackageDirectory; private readonly TemporaryDirectory tempWorkingDirectory; private readonly bool cleanupTempWorkingDirectory; @@ -51,6 +52,8 @@ namespace Semmle.Extraction.CSharp.DependencyFetching this.sourceDir = new DirectoryInfo(srcDir); packageDirectory = new TemporaryDirectory(ComputeTempDirectory(sourceDir.FullName)); + missingPackageDirectory = new TemporaryDirectory(ComputeTempDirectory(sourceDir.FullName, "missingpackages")); + tempWorkingDirectory = new TemporaryDirectory(FileUtils.GetTemporaryWorkingDirectory(out cleanupTempWorkingDirectory)); try @@ -106,7 +109,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching // TODO: Rename the dllDirNames var - it's not only dirs anymore. dllDirNames.AddRange(paths); - DownloadMissingPackages(allNonBinaryFiles); + DownloadMissingPackages(allNonBinaryFiles, dllDirNames); } // Find DLLs in the .Net / Asp.Net Framework @@ -429,7 +432,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// with this source tree. Use a SHA1 of the directory name. /// /// The full path of the temp directory. - private static string ComputeTempDirectory(string srcDir) + private static string ComputeTempDirectory(string srcDir, string packages = "packages") { var bytes = Encoding.Unicode.GetBytes(srcDir); var sha = SHA1.HashData(bytes); @@ -437,7 +440,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching foreach (var b in sha.Take(8)) sb.AppendFormat("{0:x2}", b); - return Path.Combine(Path.GetTempPath(), "GitHub", "packages", sb.ToString()); + return Path.Combine(Path.GetTempPath(), "GitHub", packages, sb.ToString()); } /// @@ -660,7 +663,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching assets = assetFiles; } - private void DownloadMissingPackages(List allFiles) + private void DownloadMissingPackages(List allFiles, List dllDirNames) { var nugetConfigs = allFiles.SelectFileNamesByName("nuget.config").ToArray(); string? nugetConfig = null; @@ -701,13 +704,15 @@ namespace Semmle.Extraction.CSharp.DependencyFetching return; } - success = RestoreProject(tempDir.DirInfo.FullName, forceDotnetRefAssemblyFetching: false, out var _, pathToNugetConfig: nugetConfig); + dotnet.RestoreProjectToDirectory(tempDir.DirInfo.FullName, missingPackageDirectory.DirInfo.FullName, forceDotnetRefAssemblyFetching: false, out var _, pathToNugetConfig: nugetConfig); // TODO: the restore might fail, we could retry with a prerelease (*-* instead of *) version of the package. if (!success) { progressMonitor.FailedToRestoreNugetPackage(package); } }); + + dllDirNames.Add(missingPackageDirectory.DirInfo.FullName); } private void AnalyseSolutions(IEnumerable solutions) @@ -732,6 +737,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching try { packageDirectory?.Dispose(); + missingPackageDirectory?.Dispose(); } catch (Exception exc) { From 70996a4c7ebd2accd4fecfbad02176672608a4e3 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Thu, 2 Nov 2023 08:43:00 +0100 Subject: [PATCH 025/122] C#: Rename dllDirNames to dllPaths. --- .../DependencyManager.cs | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index 0516f39bc38..6487961e4b9 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -81,7 +81,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching var solutions = options.SolutionFile is not null ? new[] { options.SolutionFile } : allNonBinaryFiles.SelectFileNamesByExtension(".sln"); - var dllDirNames = options.DllDirs.Count == 0 + var dllPaths = options.DllDirs.Count == 0 ? allFiles.SelectFileNamesByExtension(".dll").ToList() : options.DllDirs.Select(Path.GetFullPath).ToList(); @@ -107,20 +107,19 @@ namespace Semmle.Extraction.CSharp.DependencyFetching .Select(d => Path.Combine(packageDirectory.DirInfo.FullName, d)) .ToList(); - // TODO: Rename the dllDirNames var - it's not only dirs anymore. - dllDirNames.AddRange(paths); - DownloadMissingPackages(allNonBinaryFiles, dllDirNames); + dllPaths.AddRange(paths); + DownloadMissingPackages(allNonBinaryFiles, dllPaths); } // Find DLLs in the .Net / Asp.Net Framework // This block needs to come after the nuget restore, because the nuget restore might fetch the .NET Core/Framework reference assemblies. if (options.ScanNetFrameworkDlls) { - AddNetFrameworkDlls(dllDirNames); - AddAspNetFrameworkDlls(dllDirNames); + AddNetFrameworkDlls(dllPaths); + AddAspNetFrameworkDlls(dllPaths); } - assemblyCache = new AssemblyCache(dllDirNames, progressMonitor); + assemblyCache = new AssemblyCache(dllPaths, progressMonitor); AnalyseSolutions(solutions); foreach (var filename in assemblyCache.AllAssemblies.Select(a => a.Filename)) @@ -220,7 +219,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching } } - private void AddNetFrameworkDlls(List dllDirNames) + private void AddNetFrameworkDlls(List dllPaths) { // Multiple dotnet framework packages could be present. // The order of the packages is important, we're adding the first one that is present in the nuget cache. @@ -238,7 +237,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching if (frameworkPath is not null) { - dllDirNames.Add(frameworkPath); + dllPaths.Add(frameworkPath); progressMonitor.LogInfo("Found .NET Core/Framework DLLs in NuGet packages. Not adding installation directory."); return; } @@ -261,10 +260,10 @@ namespace Semmle.Extraction.CSharp.DependencyFetching runtimeLocation ??= Runtime.ExecutingRuntime; progressMonitor.LogInfo($".NET runtime location selected: {runtimeLocation}"); - dllDirNames.Add(runtimeLocation); + dllPaths.Add(runtimeLocation); } - private void AddAspNetFrameworkDlls(List dllDirNames) + private void AddAspNetFrameworkDlls(List dllPaths) { if (!fileContent.IsNewProjectStructureUsed || !fileContent.UseAspNetCoreDlls) { @@ -275,12 +274,12 @@ namespace Semmle.Extraction.CSharp.DependencyFetching if (GetPackageDirectory("microsoft.aspnetcore.app.ref") is string aspNetCorePackage) { progressMonitor.LogInfo($"Found ASP.NET Core in NuGet packages. Not adding installation directory."); - dllDirNames.Add(aspNetCorePackage); + dllPaths.Add(aspNetCorePackage); } else if (Runtime.AspNetCoreRuntime is string aspNetCoreRuntime) { progressMonitor.LogInfo($"ASP.NET runtime location selected: {aspNetCoreRuntime}"); - dllDirNames.Add(aspNetCoreRuntime); + dllPaths.Add(aspNetCoreRuntime); } } @@ -663,7 +662,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching assets = assetFiles; } - private void DownloadMissingPackages(List allFiles, List dllDirNames) + private void DownloadMissingPackages(List allFiles, List dllPaths) { var nugetConfigs = allFiles.SelectFileNamesByName("nuget.config").ToArray(); string? nugetConfig = null; @@ -712,7 +711,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching } }); - dllDirNames.Add(missingPackageDirectory.DirInfo.FullName); + dllPaths.Add(missingPackageDirectory.DirInfo.FullName); } private void AnalyseSolutions(IEnumerable solutions) From 56a70da28fbbbbcd64b0b453bf77bda9a877f488 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Thu, 2 Nov 2023 08:49:28 +0100 Subject: [PATCH 026/122] C#: Remove package cleanup in the dependency manager. --- .../DependencyManager.cs | 65 +------------------ 1 file changed, 1 insertion(+), 64 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index 6487961e4b9..5d26a687141 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -127,7 +127,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching UseReference(filename); } - RemoveUnnecessaryNugetPackages(); + RemoveNugetAnalyzerReferences(); ResolveConflicts(); // Output the findings @@ -162,23 +162,6 @@ namespace Semmle.Extraction.CSharp.DependencyFetching DateTime.Now - startTime); } - private void RemoveUnnecessaryNugetPackages() - { - RemoveNugetAnalyzerReferences(); - RemoveRuntimeNugetPackageReferences(); - - if (fileContent.IsNewProjectStructureUsed - && !fileContent.UseAspNetCoreDlls) - { - // This might have been restored by the CLI even though the project isn't an asp.net core one. - RemoveNugetPackageReference("microsoft.aspnetcore.app.ref"); - } - - // TODO: There could be multiple `microsoft.netframework.referenceassemblies` packages, - // we could keep the newest one, but this is covered by the conflict resolution logic - // (if the file names match) - } - private void RemoveNugetAnalyzerReferences() { if (!options.UseNuGet) @@ -283,52 +266,6 @@ namespace Semmle.Extraction.CSharp.DependencyFetching } } - private void RemoveRuntimeNugetPackageReferences() - { - var runtimePackagePrefixes = new[] - { - "microsoft.netcore.app.runtime", - "microsoft.aspnetcore.app.runtime", - "microsoft.windowsdesktop.app.runtime", - - // legacy runtime packages: - "runtime.linux-x64.microsoft.netcore.app", - "runtime.osx-x64.microsoft.netcore.app", - "runtime.win-x64.microsoft.netcore.app", - - // Internal implementation packages not meant for direct consumption: - "runtime." - }; - RemoveNugetPackageReference(runtimePackagePrefixes); - } - - private void RemoveNugetPackageReference(params string[] packagePrefixes) - { - if (!options.UseNuGet) - { - return; - } - - var packageFolder = packageDirectory.DirInfo.FullName.ToLowerInvariant(); - if (packageFolder == null) - { - return; - } - - var packagePathPrefixes = packagePrefixes.Select(p => Path.Combine(packageFolder, p.ToLowerInvariant())); - - foreach (var filename in usedReferences.Keys) - { - var lowerFilename = filename.ToLowerInvariant(); - - if (packagePathPrefixes.Any(prefix => lowerFilename.StartsWith(prefix))) - { - usedReferences.Remove(filename); - progressMonitor.RemovedReference(filename); - } - } - } - private string? GetPackageDirectory(string packagePrefix) { if (!options.UseNuGet) From 11505d684279bbd111f21a591a7a510f6892486a Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Thu, 2 Nov 2023 09:55:05 +0100 Subject: [PATCH 027/122] C#: Make the assembly cache more robust against non-existing paths. --- .../AssemblyCache.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/AssemblyCache.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/AssemblyCache.cs index 51ffdece6a3..7adceebc7eb 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/AssemblyCache.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/AssemblyCache.cs @@ -27,12 +27,18 @@ namespace Semmle.Extraction.CSharp.DependencyFetching if (File.Exists(path)) { pendingDllsToIndex.Enqueue(path); + continue; } - else + + if (Directory.Exists(path)) { progressMonitor.FindingFiles(path); AddReferenceDirectory(path); } + else + { + progressMonitor.LogInfo("AssemblyCache: Path not found: " + path); + } } IndexReferences(); } From 7b91be6c52a764a8d12d20342398ef2d21d05dde Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Thu, 2 Nov 2023 16:08:17 +0100 Subject: [PATCH 028/122] C#: Allways add Windows Desktop App dlls if the NuGet package is downloaded. --- .../DependencyManager.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index 5d26a687141..46cb6f32cb4 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -117,6 +117,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching { AddNetFrameworkDlls(dllPaths); AddAspNetFrameworkDlls(dllPaths); + AddMicrosoftWindowsDesktopDlls(dllPaths); } assemblyCache = new AssemblyCache(dllPaths, progressMonitor); @@ -266,6 +267,15 @@ namespace Semmle.Extraction.CSharp.DependencyFetching } } + private void AddMicrosoftWindowsDesktopDlls(List dllPaths) + { + if (GetPackageDirectory("microsoft.windowsdesktop.app.ref") is string windowsDesktopApp) + { + progressMonitor.LogInfo($"Found Windows Desktop App in NuGet packages."); + dllPaths.Add(windowsDesktopApp); + } + } + private string? GetPackageDirectory(string packagePrefix) { if (!options.UseNuGet) From 62dd86bacba45a293b730ca2d3e94d4f26ed2933 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 25 Oct 2023 16:41:00 +0200 Subject: [PATCH 029/122] C#: Update standalone integration tests expected output. --- .../posix-only/standalone_dependencies/Assemblies.expected | 6 +----- .../standalone_dependencies/Assemblies.expected | 6 +----- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies/Assemblies.expected b/csharp/ql/integration-tests/posix-only/standalone_dependencies/Assemblies.expected index dbaace30bc7..e23acecf224 100644 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies/Assemblies.expected +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies/Assemblies.expected @@ -1,7 +1,3 @@ -| /avalara.avatax/21.10.0/lib/net20/Avalara.AvaTax.RestClient.net20.dll | -| /avalara.avatax/21.10.0/lib/net45/Avalara.AvaTax.RestClient.net45.dll | -| /avalara.avatax/21.10.0/lib/net461/Avalara.AvaTax.RestClient.net461.dll | -| /avalara.avatax/21.10.0/lib/netstandard16/Avalara.AvaTax.netstandard11.dll | | /avalara.avatax/21.10.0/lib/netstandard20/Avalara.AvaTax.netstandard20.dll | | /microsoft.bcl.asyncinterfaces/6.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll | | /microsoft.netcore.app.ref/3.1.0/ref/netcoreapp3.1/System.Runtime.InteropServices.WindowsRuntime.dll | @@ -168,4 +164,4 @@ | /microsoft.netcore.app.ref/7.0.2/ref/net7.0/WindowsBase.dll | | /microsoft.netcore.app.ref/7.0.2/ref/net7.0/mscorlib.dll | | /microsoft.netcore.app.ref/7.0.2/ref/net7.0/netstandard.dll | -| /newtonsoft.json/12.0.1/lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.dll | +| /newtonsoft.json/12.0.1/lib/netstandard2.0/Newtonsoft.Json.dll | diff --git a/csharp/ql/integration-tests/windows-only/standalone_dependencies/Assemblies.expected b/csharp/ql/integration-tests/windows-only/standalone_dependencies/Assemblies.expected index f21d44a3c33..55205c8ad35 100644 --- a/csharp/ql/integration-tests/windows-only/standalone_dependencies/Assemblies.expected +++ b/csharp/ql/integration-tests/windows-only/standalone_dependencies/Assemblies.expected @@ -1,7 +1,3 @@ -| /avalara.avatax/21.10.0/lib/net20/Avalara.AvaTax.RestClient.net20.dll | -| /avalara.avatax/21.10.0/lib/net45/Avalara.AvaTax.RestClient.net45.dll | -| /avalara.avatax/21.10.0/lib/net461/Avalara.AvaTax.RestClient.net461.dll | -| /avalara.avatax/21.10.0/lib/netstandard16/Avalara.AvaTax.netstandard11.dll | | /avalara.avatax/21.10.0/lib/netstandard20/Avalara.AvaTax.netstandard20.dll | | /microsoft.bcl.asyncinterfaces/6.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll | | /microsoft.netcore.app.ref/3.1.0/ref/netcoreapp3.1/System.Runtime.InteropServices.WindowsRuntime.dll | @@ -212,4 +208,4 @@ | /microsoft.windowsdesktop.app.ref/7.0.2/ref/net7.0/UIAutomationTypes.dll | | /microsoft.windowsdesktop.app.ref/7.0.2/ref/net7.0/WindowsBase.dll | | /microsoft.windowsdesktop.app.ref/7.0.2/ref/net7.0/WindowsFormsIntegration.dll | -| /newtonsoft.json/12.0.1/lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.dll | +| /newtonsoft.json/12.0.1/lib/netstandard2.0/Newtonsoft.Json.dll | From eb228b6e6883eb80f194a5d60c8e479fb5888421 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Thu, 2 Nov 2023 19:16:43 +0100 Subject: [PATCH 030/122] C#: Address some review comments. --- .../DependencyManager.cs | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index 46cb6f32cb4..e98b3ad9c47 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -116,7 +116,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching if (options.ScanNetFrameworkDlls) { AddNetFrameworkDlls(dllPaths); - AddAspNetFrameworkDlls(dllPaths); + AddAspNetCoreFrameworkDlls(dllPaths); AddMicrosoftWindowsDesktopDlls(dllPaths); } @@ -247,14 +247,14 @@ namespace Semmle.Extraction.CSharp.DependencyFetching dllPaths.Add(runtimeLocation); } - private void AddAspNetFrameworkDlls(List dllPaths) + private void AddAspNetCoreFrameworkDlls(List dllPaths) { if (!fileContent.IsNewProjectStructureUsed || !fileContent.UseAspNetCoreDlls) { return; } - // First try to find ASP.NET assemblies in the NuGet packages + // First try to find ASP.NET Core assemblies in the NuGet packages if (GetPackageDirectory("microsoft.aspnetcore.app.ref") is string aspNetCorePackage) { progressMonitor.LogInfo($"Found ASP.NET Core in NuGet packages. Not adding installation directory."); @@ -678,27 +678,25 @@ namespace Semmle.Extraction.CSharp.DependencyFetching }); } - public void Dispose() + public void Dispose(TemporaryDirectory? dir, string name) { try { - packageDirectory?.Dispose(); - missingPackageDirectory?.Dispose(); + dir?.Dispose(); } catch (Exception exc) { - progressMonitor.LogInfo("Couldn't delete package directory: " + exc.Message); + progressMonitor.LogInfo($"Couldn't delete {name} directory {exc.Message}"); } + } + + public void Dispose() + { + Dispose(packageDirectory, "package"); + Dispose(missingPackageDirectory, "missing package"); if (cleanupTempWorkingDirectory) { - try - { - tempWorkingDirectory?.Dispose(); - } - catch (Exception exc) - { - progressMonitor.LogInfo("Couldn't delete temporary working directory: " + exc.Message); - } + Dispose(tempWorkingDirectory, "temporary working"); } } } From 49add7d8ce56d866fb77cc94a81b3ceb7fcc2fe9 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 3 Nov 2023 12:07:15 +0000 Subject: [PATCH 031/122] Swift: Add stubs to test. --- .../dataflow/taint/libraries/data.swift | 102 ++++++++++-------- 1 file changed, 56 insertions(+), 46 deletions(-) diff --git a/swift/ql/test/library-tests/dataflow/taint/libraries/data.swift b/swift/ql/test/library-tests/dataflow/taint/libraries/data.swift index 2437e91981f..8dedfa04e98 100644 --- a/swift/ql/test/library-tests/dataflow/taint/libraries/data.swift +++ b/swift/ql/test/library-tests/dataflow/taint/libraries/data.swift @@ -17,9 +17,13 @@ extension DataProtocol { extension UnsafeRawBufferPointer : DataProtocol { } extension Array : DataProtocol where Element == UInt8 { } -protocol MutableDataProtocol : DataProtocol, RangeReplaceableCollection { } +protocol MutableDataProtocol : DataProtocol, MutableCollection, RangeReplaceableCollection { } -struct Data : MutableDataProtocol +protocol ContiguousBytes { + func withUnsafeBytes(_ body: (UnsafeRawBufferPointer) throws -> R) rethrows -> R +} + +struct Data : MutableDataProtocol, ContiguousBytes { struct Base64EncodingOptions : OptionSet { let rawValue: Int } struct Base64DecodingOptions : OptionSet { let rawValue: Int } @@ -31,7 +35,10 @@ struct Data : MutableDataProtocol var endIndex: Self.Index { get { return 0 } } func index(after: Self.Index) -> Self.Index { return 0 } func index(before: Self.Index) -> Self.Index { return 0 } - subscript(position: Self.Index) -> Self.Element { get { return 0 } } + subscript(position: Self.Index) -> Self.Element { + get { return 0 } + set { } + } init() {} init(_ elements: S) {} @@ -74,6 +81,9 @@ struct Data : MutableDataProtocol func shuffled(using: inout T) -> [UInt8] { return [] } func trimmingPrefix(_ prefix: Prefix) -> Data where Prefix : Sequence, UInt8 == Prefix.Element { return Data("") } func trimmingPrefix(while: (UInt8) -> Bool) -> Data { return Data("") } + + mutating func withUnsafeMutableBytes(_ body: (UnsafeMutableRawBufferPointer) throws -> ResultType) rethrows -> ResultType { return try body(UnsafeMutableRawBufferPointer(start: nil, count: 0)) } + func withUnsafeBytes(_ body: (UnsafeRawBufferPointer) throws -> R) rethrows -> R { return try body(UnsafeRawBufferPointer(start: nil, count: 0)) } } // --- tests --- @@ -94,193 +104,193 @@ func taintThroughData() { let dataTainted2 = Data(dataTainted) sink(arg: dataClean) - sink(arg: dataTainted) // $ tainted=93 - sink(arg: dataTainted2) // $ tainted=93 + sink(arg: dataTainted) // $ tainted=103 + sink(arg: dataTainted2) // $ tainted=103 // ";Data;true;init(base64Encoded:options:);;;Argument[0];ReturnValue;taint", let dataTainted3 = Data(base64Encoded: source() as! Data, options: []) - sink(arg: dataTainted3) // $ tainted=101 + sink(arg: dataTainted3) // $ tainted=111 // ";Data;true;init(buffer:);;;Argument[0];ReturnValue;taint", let dataTainted4 = Data(buffer: source() as! UnsafeBufferPointer) - sink(arg: dataTainted4) // $ tainted=105 + sink(arg: dataTainted4) // $ tainted=115 let dataTainted5 = Data(buffer: source() as! UnsafeMutablePointer) - sink(arg: dataTainted5) // $ tainted=107 + sink(arg: dataTainted5) // $ tainted=117 // ";Data;true;init(bytes:count:);;;Argument[0];ReturnValue;taint", let dataTainted6 = Data(bytes: source() as! UnsafeRawPointer, count: 0) - sink(arg: dataTainted6) // $ tainted=111 + sink(arg: dataTainted6) // $ tainted=121 // ";Data;true;init(bytesNoCopy:count:deallocator:);;;Argument[0];ReturnValue;taint", let dataTainted7 = Data(bytesNoCopy: source() as! UnsafeRawPointer, count: 0, deallocator: Data.Deallocator.none) - sink(arg: dataTainted7) // $ tainted=115 + sink(arg: dataTainted7) // $ tainted=125 // ";Data;true;init(contentsOf:options:);;;Argument[0];ReturnValue;taint", let urlTainted8 = source() as! URL let dataTainted8 = Data(contentsOf: urlTainted8, options: []) - sink(arg: dataTainted8) // $ tainted=119 + sink(arg: dataTainted8) // $ tainted=129 // ";Data;true;init(referencing:);;;Argument[0];ReturnValue;taint", let dataTainted9 = Data(referencing: source() as! NSData) - sink(arg: dataTainted9) // $ tainted=124 + sink(arg: dataTainted9) // $ tainted=134 // ";Data;true;append(_:);;;Argument[0];Argument[-1];taint", let dataTainted10 = Data("") dataTainted10.append(source() as! Data) - sink(arg: dataTainted10) // $ tainted=129 + sink(arg: dataTainted10) // $ tainted=139 let dataTainted11 = Data("") dataTainted11.append(source() as! UInt8) - sink(arg: dataTainted11) // $ tainted=133 + sink(arg: dataTainted11) // $ tainted=143 let dataTainted12 = Data("") dataTainted12.append(source() as! UnsafeBufferPointer) - sink(arg: dataTainted12) // $ tainted=137 + sink(arg: dataTainted12) // $ tainted=147 // ";Data;true;append(_:count:);;;Argument[0];Argument[-1];taint", let dataTainted13 = Data("") dataTainted13.append(source() as! UnsafePointer, count: 0) - sink(arg: dataTainted13) // $ tainted=142 + sink(arg: dataTainted13) // $ tainted=152 // ";Data;true;append(contentsOf:);;;Argument[0];Argument[-1];taint", let dataTainted14 = Data("") dataTainted14.append(contentsOf: source() as! [UInt8]) - sink(arg: dataTainted14) // $ tainted=147 + sink(arg: dataTainted14) // $ tainted=157 // ";Data;true;base64EncodedData(options:);;;Argument[-1];ReturnValue;taint", let dataTainted15 = source() as! Data - sink(arg: dataTainted15.base64EncodedData(options: [])) // $ tainted=151 + sink(arg: dataTainted15.base64EncodedData(options: [])) // $ tainted=161 // ";Data;true;base64EncodedString(options:);;;Argument[-1];ReturnValue;taint", let dataTainted16 = source() as! Data - sink(arg: dataTainted16.base64EncodedString(options: [])) // $ tainted=155 + sink(arg: dataTainted16.base64EncodedString(options: [])) // $ tainted=165 // ";Data;true;compactMap(_:);;;Argument[-1];ReturnValue;taint", let dataTainted17 = source() as! Data let compactMapped: [Int] = dataTainted17.compactMap { str in Int(str) } - sink(arg: compactMapped) // $ tainted=159 + sink(arg: compactMapped) // $ tainted=169 // ";Data;true;copyBytes(to:);;;Argument[-1];Argument[0];taint", let dataTainted18 = source() as! Data let pointerTainted18 = UnsafeMutableRawBufferPointer.allocate(byteCount: 0, alignment: 0) dataTainted18.copyBytes(to: pointerTainted18) - sink(arg: pointerTainted18) // $ tainted=164 + sink(arg: pointerTainted18) // $ tainted=174 // ";Data;true;copyBytes(to:count:);;;Argument[-1];Argument[0];taint", let dataTainted19 = source() as! Data let pointerTainted19 = UnsafeMutablePointer.allocate(capacity: 0) dataTainted19.copyBytes(to: pointerTainted19, count: 0) - sink(arg: pointerTainted19) // $ tainted=170 + sink(arg: pointerTainted19) // $ tainted=180 // ";Data;true;copyBytes(to:from:);;;Argument[-1];Argument[0];taint", let dataTainted20 = source() as! Data let pointerTainted20 = UnsafeMutablePointer.allocate(capacity: 0) dataTainted20.copyBytes(to: pointerTainted20, from: 0..<1) - sink(arg: pointerTainted20) // $ tainted=176 + sink(arg: pointerTainted20) // $ tainted=186 // ";Data;true;flatMap(_:);;;Argument[-1];ReturnValue;taint", let dataTainted21 = source() as! Data let flatMapped = dataTainted21.flatMap { Array(repeating: $0, count: 0) } - sink(arg: flatMapped) // $ tainted=182 + sink(arg: flatMapped) // $ tainted=192 let dataTainted22 = source() as! Data let flatMapped2 = dataTainted22.flatMap { str in Int(str) } - sink(arg: flatMapped2) // $ tainted=186 + sink(arg: flatMapped2) // $ tainted=196 // ";Data;true;insert(_:at:);;;Argument[0];Argument[-1];taint", let dataTainted23 = Data("") dataTainted23.insert(source() as! UInt8, at: 0) - sink(arg: dataTainted23) // $ tainted=192 + sink(arg: dataTainted23) // $ tainted=202 // ";Data;true;insert(contentsOf:at:);;;Argument[0];Argument[-1];taint", let dataTainted24 = Data("") dataTainted24.insert(contentsOf: source() as! [UInt8], at: 0) - sink(arg: dataTainted24) // $ tainted=197 + sink(arg: dataTainted24) // $ tainted=207 // ";Data;true;map(_:);;;Argument[-1];ReturnValue;taint", let dataTainted25 = source() as! Data let mapped = dataTainted25.map { $0 } - sink(arg: mapped) // $ tainted=201 + sink(arg: mapped) // $ tainted=211 // ";Data;true;reduce(into:_:);;;Argument[-1];ReturnValue;taint", let dataTainted26 = source() as! Data let reduced = dataTainted26.reduce(into: [:]) { c, i in c[i, default: 0] += 1 } - sink(arg: reduced) // $ tainted=206 + sink(arg: reduced) // $ tainted=216 // ";Data;true;replace(_:with:maxReplacements:);;;Argument[1];Argument[-1];taint", let dataTainted27 = Data("") dataTainted27.replace([0], with: source() as! [UInt8], maxReplacements: .max) - sink(arg: dataTainted27) // $ tainted=212 + sink(arg: dataTainted27) // $ tainted=222 // ";Data;true;replaceSubrange(_:with:);;;Argument[1];Argument[-1];taint", let dataTainted28 = Data("") dataTainted28.replaceSubrange(1..<3, with: source() as! Data) - sink(arg: dataTainted28) // $ tainted=217 + sink(arg: dataTainted28) // $ tainted=227 let dataTainted29 = Data("") dataTainted29.replaceSubrange(1..<3, with: source() as! [UInt8]) - sink(arg: dataTainted29) // $ tainted=221 + sink(arg: dataTainted29) // $ tainted=231 let dataTainted30 = Data("") dataTainted30.replaceSubrange(1..<3, with: source() as! UnsafeBufferPointer) - sink(arg: dataTainted30) // $ tainted=225 + sink(arg: dataTainted30) // $ tainted=235 // ";Data;true;replaceSubrange(_:with:count:);;;Argument[1];Argument[-1];taint", let dataTainted31 = Data("") dataTainted31.replaceSubrange(1..<3, with: source() as! UnsafeRawPointer, count: 0) - sink(arg: dataTainted31) // $ tainted=230 + sink(arg: dataTainted31) // $ tainted=240 // ";Data;true;replacing(_:with:maxReplacements:);;;Argument[1];Argument[-1];taint", let dataTainted32 = Data("") let _ = dataTainted32.replacing([0], with: source() as! [UInt8], maxReplacements: 0) - sink(arg: dataTainted32) // $ tainted=235 + sink(arg: dataTainted32) // $ tainted=245 // ";Data;true;replacing(_:with:subrange:maxReplacements:);;;Argument[1];Argument[-1];taint", let dataTainted33 = Data("") let _ = dataTainted33.replacing([0], with: source() as! [UInt8], subrange: 1..<3, maxReplacements: 0) - sink(arg: dataTainted33) // $ tainted=240 + sink(arg: dataTainted33) // $ tainted=250 // ";Data;true;reversed();;;Argument[-1];ReturnValue;taint", let dataTainted34 = source() as! Data - sink(arg: dataTainted34.reversed()) // $ tainted=244 + sink(arg: dataTainted34.reversed()) // $ tainted=254 // ";Data;true;sorted();;;Argument[-1];ReturnValue;taint", let dataTainted35 = source() as! Data - sink(arg: dataTainted35.sorted()) // $ tainted=248 + sink(arg: dataTainted35.sorted()) // $ tainted=258 // ";Data;true;sorted(by:);;;Argument[-1];ReturnValue;taint", let dataTainted36 = source() as! Data - sink(arg: dataTainted36.sorted{ _,_ in return false }) // $ tainted=252 + sink(arg: dataTainted36.sorted{ _,_ in return false }) // $ tainted=262 // ";Data;true;sorted(using:);;;Argument[-1];ReturnValue;taint", let dataTainted37 = source() as! Data - sink(arg: dataTainted37.sorted(using: cmp()!)) // $ tainted=256 + sink(arg: dataTainted37.sorted(using: cmp()!)) // $ tainted=266 // ";Data;true;shuffled();;;Argument[-1];ReturnValue;taint", let dataTainted38 = source() as! Data - sink(arg: dataTainted38.shuffled()) // $ tainted=260 + sink(arg: dataTainted38.shuffled()) // $ tainted=270 // ";Data;true;shuffled(using:);;;Argument[-1];ReturnValue;taint", let dataTainted39 = source() as! Data var myRng = rng()! - sink(arg: dataTainted39.shuffled(using: &myRng)) // $ tainted=264 + sink(arg: dataTainted39.shuffled(using: &myRng)) // $ tainted=274 // ";Data;true;trimmingPrefix(_:);;;Argument[-1];ReturnValue;taint", let dataTainted40 = source() as! Data - sink(arg: dataTainted40.trimmingPrefix([0])) // $ tainted=269 + sink(arg: dataTainted40.trimmingPrefix([0])) // $ tainted=279 // ";Data;true;trimmingPrefix(while:);;;Argument[-1];ReturnValue;taint" let dataTainted41 = source() as! Data - sink(arg: dataTainted41.trimmingPrefix { _ in false }) // $ tainted=273 + sink(arg: dataTainted41.trimmingPrefix { _ in false }) // $ tainted=283 // ";DataProtocol;true;copyBytes(to:);;;Argument[-1];Argument[0];taint", let dataTainted43 = source() as! UnsafeRawBufferPointer let pointerTainted43 = UnsafeMutableRawBufferPointer.allocate(byteCount: 0, alignment: 0) dataTainted43.copyBytes(to: pointerTainted43) - sink(arg: pointerTainted43) // $ tainted=277 + sink(arg: pointerTainted43) // $ tainted=287 let dataTainted44 = source() as! Array let pointerTainted44 = UnsafeMutableRawBufferPointer.allocate(byteCount: 0, alignment: 0) dataTainted44.copyBytes(to: pointerTainted44) - sink(arg: pointerTainted44) // $ tainted=282 + sink(arg: pointerTainted44) // $ tainted=292 } From e7e6529df696a245f91ade7a2c53fe0ca415aa7d Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 3 Nov 2023 12:21:32 +0000 Subject: [PATCH 032/122] Swift: Add tests. --- .../dataflow/taint/libraries/data.swift | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/swift/ql/test/library-tests/dataflow/taint/libraries/data.swift b/swift/ql/test/library-tests/dataflow/taint/libraries/data.swift index 8dedfa04e98..c8fed3e189c 100644 --- a/swift/ql/test/library-tests/dataflow/taint/libraries/data.swift +++ b/swift/ql/test/library-tests/dataflow/taint/libraries/data.swift @@ -293,4 +293,52 @@ func taintThroughData() { let pointerTainted44 = UnsafeMutableRawBufferPointer.allocate(byteCount: 0, alignment: 0) dataTainted44.copyBytes(to: pointerTainted44) sink(arg: pointerTainted44) // $ tainted=292 + + let dataTainted45 = source() as! Data + let result45 = dataTainted45.withContiguousStorageIfAvailable({ + buffer in + + sink(arg: buffer) // $ tainted=297 + sink(arg: buffer[0]) // $ tainted=297 + + return source() as! Int + }) + sink(arg: result45!) // $ tainted=304 + + var data46 = Data(0) + let result46 = data46.withContiguousMutableStorageIfAvailable({ + buffer in + + buffer[0] = source() as! UInt8 + sink(arg: buffer) + sink(arg: buffer[0]) // $ MISSING: tainted=312 + + return source() as! Int + }) + sink(arg: result46!) // $ tainted=316 + sink(arg: data46) // $ MISSING: tainted=312 + + let dataTainted47 = source() as! Data + let result47 = dataTainted47.withUnsafeBytes({ + buffer in + + sink(arg: buffer) // $ tainted=321 + sink(arg: buffer[0]) // $ tainted=321 + + return source() as! Int + }) + sink(arg: result47) // $ tainted=328 + + var data48 = Data(0) + let result48 = data48.withUnsafeMutableBytes({ + buffer in + + buffer[0] = source() as! UInt8 + sink(arg: buffer) + sink(arg: buffer[0]) // $ MISSING: tainted=336 + + return source() as! Int + }) + sink(arg: result48) // $ tainted=340 + sink(arg: data48) // $ MISSING: tainted=336 } From 003166af13dd6ea91afe95b9ce1060c8f9da113d Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 3 Nov 2023 11:21:17 +0100 Subject: [PATCH 033/122] C#: Collect information about used dependencies in a Dependencies object. --- .../Assets.cs | 75 +++++++------------ .../Dependencies.cs | 66 ++++++++++++++++ .../DependencyManager.cs | 3 + 3 files changed, 98 insertions(+), 46 deletions(-) create mode 100644 csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Dependencies.cs diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs index 9d1dc3fc774..1406e559d7a 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs @@ -21,27 +21,11 @@ namespace Semmle.Extraction.CSharp.DependencyFetching "netstandard.library.ref" }; - internal Assets(ProgressMonitor progressMonitor) { this.progressMonitor = progressMonitor; } - /// - /// In most cases paths in asset files point to dll's or the empty _._ file, which - /// is sometimes there to avoid the directory being empty. - /// That is, if the path specifically adds a .dll we use that, otherwise we as a fallback - /// add the entire directory (which should be fine in case of _._ as well). - /// - private static string ParseFilePath(string path) - { - if (path.EndsWith(".dll")) - { - return path; - } - return Path.GetDirectoryName(path) ?? path; - } - /// /// Class needed for deserializing parts of an assets file. /// It holds information about a reference. @@ -62,10 +46,11 @@ namespace Semmle.Extraction.CSharp.DependencyFetching } /// - /// Gets the package dependencies from the assets file. + /// Add the package dependencies from the assets file to dependencies. /// - /// Parse a part of the JSon assets file and returns the paths - /// to the dependencies required for compilation. + /// Parse a part of the JSon assets file and add the paths + /// to the dependencies required for compilation (and collect + /// information about used packages). /// /// Example: /// { @@ -88,12 +73,17 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// } /// } /// - /// Returns { - /// "castle.core/4.4.1/lib/netstandard1.5/Castle.Core.dll", - /// "json.net/1.0.33/lib/netstandard2.0/Json.Net.dll" - /// } + /// Returns dependencies + /// Required = { + /// "castle.core/4.4.1/lib/netstandard1.5/Castle.Core.dll", + /// "json.net/1.0.33/lib/netstandard2.0/Json.Net.dll" + /// } + /// UsedPackages = { + /// "castle.core", + /// "json.net" + /// } /// - private IEnumerable GetPackageDependencies(JObject json) + private Dependencies AddPackageDependencies(JObject json, Dependencies dependencies) { // If there are more than one framework we need to pick just one. // To ensure stability we pick one based on the lexicographic order of @@ -108,49 +98,41 @@ namespace Semmle.Extraction.CSharp.DependencyFetching if (references is null) { progressMonitor.LogDebug("No references found in the targets section in the assets file."); - return Array.Empty(); + return dependencies; } // Find all the compile dependencies for each reference and // create the relative path to the dependency. - var dependencies = references - .SelectMany(r => + return references + .Aggregate(dependencies, (deps, r) => { var info = r.Value; var name = r.Key.ToLowerInvariant(); if (info.Type != "package") { - return Array.Empty(); + return deps; } // If this is a .NET framework reference then include everything. return netFrameworks.Any(framework => name.StartsWith(framework)) - ? new[] { name } + ? deps.Add(name, "") : info .Compile - .Select(p => Path.Combine(name, ParseFilePath(p.Key))); - }) - .ToList(); - - return dependencies; + .Aggregate(deps, (d, p) => d.Add(name, p.Key)); + }); } /// - /// Parse `json` as project.assets.json content and populate `dependencies` with the - /// relative paths to the dependencies required for compilation. + /// Parse `json` as project.assets.json content and add relative paths to the dependencies + /// (together with used package information) required for compilation. /// /// True if parsing succeeds, otherwise false. - public bool TryParse(string json, out IEnumerable dependencies) + public bool TryParse(string json, Dependencies dependencies) { - dependencies = Array.Empty(); - try { var obj = JObject.Parse(json); - var packages = GetPackageDependencies(obj); - - dependencies = packages.ToList(); - + AddPackageDependencies(obj, dependencies); return true; } catch (Exception e) @@ -160,13 +142,14 @@ namespace Semmle.Extraction.CSharp.DependencyFetching } } - public static IEnumerable GetCompilationDependencies(ProgressMonitor progressMonitor, IEnumerable assets) + public static Dependencies GetCompilationDependencies(ProgressMonitor progressMonitor, IEnumerable assets) { var parser = new Assets(progressMonitor); - return assets.SelectMany(asset => + return assets.Aggregate(new Dependencies(), (dependencies, asset) => { var json = File.ReadAllText(asset); - return parser.TryParse(json, out var dependencies) ? dependencies : Array.Empty(); + parser.TryParse(json, dependencies); + return dependencies; }); } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Dependencies.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Dependencies.cs new file mode 100644 index 00000000000..6eaa0ae289b --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Dependencies.cs @@ -0,0 +1,66 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; + +namespace Semmle.Extraction.CSharp.DependencyFetching +{ + /// + /// Container class for dependencies found in the assets file. + /// + internal class Dependencies + { + private readonly List required = new(); + private readonly HashSet usedPackages = new(); + + /// + /// In most cases paths in asset files point to dll's or the empty _._ file, which + /// is sometimes there to avoid the directory being empty. + /// That is, if the path specifically adds a .dll we use that, otherwise we as a fallback + /// add the entire directory (which should be fine in case of _._ as well). + /// + private static string ParseFilePath(string path) + { + if (path.EndsWith(".dll")) + { + return path; + } + return Path.GetDirectoryName(path) ?? path; + } + + private static string GetPackageName(string package) => + package + .Split("/") + .First(); + + /// + /// Dependencies required for Compilation. + /// + public IEnumerable Required => required; + + /// + /// Packages that are used as a part of the required dependencies. + /// + public IEnumerable UsedPackages => usedPackages; + + /// + /// Add a dependency inside a package. + /// + public Dependencies Add(string package, string dependency) + { + var path = Path.Combine(package, ParseFilePath(dependency)); + required.Add(path); + usedPackages.Add(GetPackageName(package)); + return this; + } + + /// + /// Add a dependency to an entire package + /// + public Dependencies Add(string package) + { + required.Add(package); + usedPackages.Add(GetPackageName(package)); + return this; + } + } +} \ No newline at end of file diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index e98b3ad9c47..cee0ee25c25 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -104,9 +104,12 @@ namespace Semmle.Extraction.CSharp.DependencyFetching var dependencies = Assets.GetCompilationDependencies(progressMonitor, assets1.Union(assets2)); var paths = dependencies + .Required .Select(d => Path.Combine(packageDirectory.DirInfo.FullName, d)) .ToList(); + // TODO: Log all packages that are not used as a dependency. + dllPaths.AddRange(paths); DownloadMissingPackages(allNonBinaryFiles, dllPaths); } From 1054e7a4ee92816e3be4c6e4e38cd5cd804e09c3 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 3 Nov 2023 11:22:27 +0100 Subject: [PATCH 034/122] C#: Update assets unit tests. --- .../Semmle.Extraction.Tests/Assets.cs | 37 ++++++++++++++----- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.Tests/Assets.cs b/csharp/extractor/Semmle.Extraction.Tests/Assets.cs index 56377bfbd7c..c328762c93b 100644 --- a/csharp/extractor/Semmle.Extraction.Tests/Assets.cs +++ b/csharp/extractor/Semmle.Extraction.Tests/Assets.cs @@ -14,20 +14,28 @@ namespace Semmle.Extraction.Tests // Setup var assets = new Assets(new ProgressMonitor(new LoggerStub())); var json = assetsJson1; + var dependencies = new Dependencies(); // Execute - var success = assets.TryParse(json, out var dependencies); + var success = assets.TryParse(json, dependencies); // Verify Assert.True(success); - Assert.Equal(4, dependencies.Count()); + Assert.Equal(5, dependencies.Required.Count()); + Assert.Equal(4, dependencies.UsedPackages.Count()); - var normalizedPaths = dependencies.Select(FixExpectedPathOnWindows); - // Packages references + var normalizedPaths = dependencies.Required.Select(FixExpectedPathOnWindows); + // Required references Assert.Contains("castle.core/4.4.1/lib/netstandard1.5/Castle.Core.dll", normalizedPaths); + Assert.Contains("castle.core/4.4.1/lib/netstandard1.5/Castle.Core2.dll", normalizedPaths); Assert.Contains("json.net/1.0.33/lib/netstandard2.0/Json.Net.dll", normalizedPaths); Assert.Contains("microsoft.aspnetcore.cryptography.internal/6.0.8/lib/net6.0/Microsoft.AspNetCore.Cryptography.Internal.dll", normalizedPaths); Assert.Contains("humanizer.core/2.8.26/lib/netstandard2.0", normalizedPaths); + // Used packages + Assert.Contains("castle.core", dependencies.UsedPackages); + Assert.Contains("json.net", dependencies.UsedPackages); + Assert.Contains("microsoft.aspnetcore.cryptography.internal", dependencies.UsedPackages); + Assert.Contains("humanizer.core", dependencies.UsedPackages); } [Fact] @@ -36,15 +44,20 @@ namespace Semmle.Extraction.Tests // Setup var assets = new Assets(new ProgressMonitor(new LoggerStub())); var json = assetsJson2; + var dependencies = new Dependencies(); // Execute - var success = assets.TryParse(json, out var dependencies); + var success = assets.TryParse(json, dependencies); // Verify Assert.True(success); - Assert.Equal(2, dependencies.Count()); - Assert.Contains("microsoft.netframework.referenceassemblies/1.0.3", dependencies); - Assert.Contains("microsoft.netframework.referenceassemblies.net48/1.0.3", dependencies); + Assert.Equal(2, dependencies.Required.Count()); + // Required references + Assert.Contains("microsoft.netframework.referenceassemblies/1.0.3", dependencies.Required); + Assert.Contains("microsoft.netframework.referenceassemblies.net48/1.0.3", dependencies.Required); + // Used packages + Assert.Contains("microsoft.netframework.referenceassemblies", dependencies.UsedPackages); + Assert.Contains("microsoft.netframework.referenceassemblies.net48", dependencies.UsedPackages); } [Fact] @@ -53,13 +66,14 @@ namespace Semmle.Extraction.Tests // Setup var assets = new Assets(new ProgressMonitor(new LoggerStub())); var json = "garbage data"; + var dependencies = new Dependencies(); // Execute - var success = assets.TryParse(json, out var dependencies); + var success = assets.TryParse(json, dependencies); // Verify Assert.False(success); - Assert.Empty(dependencies); + Assert.Empty(dependencies.Required); } private readonly string assetsJson1 = """ @@ -76,6 +90,9 @@ namespace Semmle.Extraction.Tests "compile": { "lib/netstandard1.5/Castle.Core.dll": { "related": ".xml" + }, + "lib/netstandard1.5/Castle.Core2.dll": { + "related": ".xml" } }, "runtime": { From 4689bdb468153a8f78bc9f10e4d5e2e0c3869908 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 3 Nov 2023 11:30:42 +0100 Subject: [PATCH 035/122] C#: Log unused downloaded packages. --- .../Dependencies.cs | 2 +- .../DependencyManager.cs | 22 ++++++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Dependencies.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Dependencies.cs index 6eaa0ae289b..7bc021e624a 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Dependencies.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Dependencies.cs @@ -40,7 +40,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// /// Packages that are used as a part of the required dependencies. /// - public IEnumerable UsedPackages => usedPackages; + public HashSet UsedPackages => usedPackages; /// /// Add a dependency inside a package. diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index cee0ee25c25..cb4f0b82ee3 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -107,10 +107,9 @@ namespace Semmle.Extraction.CSharp.DependencyFetching .Required .Select(d => Path.Combine(packageDirectory.DirInfo.FullName, d)) .ToList(); - - // TODO: Log all packages that are not used as a dependency. - dllPaths.AddRange(paths); + + LogAllUnusedPackages(dependencies); DownloadMissingPackages(allNonBinaryFiles, dllPaths); } @@ -292,6 +291,23 @@ namespace Semmle.Extraction.CSharp.DependencyFetching .FullName; } + private IEnumerable GetAllPackageDirectories() + { + if (!options.UseNuGet) + { + return Enumerable.Empty(); + } + + return new DirectoryInfo(packageDirectory.DirInfo.FullName) + .EnumerateDirectories("*", new EnumerationOptions { MatchCasing = MatchCasing.CaseInsensitive, RecurseSubdirectories = false }) + .Select(d => d.FullName); + } + + private void LogAllUnusedPackages(Dependencies dependencies) => + GetAllPackageDirectories() + .Where(package => !dependencies.UsedPackages.Contains(package)) + .ForEach(package => progressMonitor.LogInfo($"Unused package: {package}")); + private void GenerateSourceFileFromImplicitUsings() { var usings = new HashSet(); From 31f602cd47d351f71af2830df7917f737039900e Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 3 Nov 2023 13:35:06 +0100 Subject: [PATCH 036/122] C#: Make path concatenation OS invariant. --- .../Dependencies.cs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Dependencies.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Dependencies.cs index 7bc021e624a..34f21269350 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Dependencies.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Dependencies.cs @@ -29,7 +29,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching private static string GetPackageName(string package) => package - .Split("/") + .Split(Path.DirectorySeparatorChar) .First(); /// @@ -47,9 +47,13 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// public Dependencies Add(string package, string dependency) { - var path = Path.Combine(package, ParseFilePath(dependency)); + var p = package.Replace('/', Path.DirectorySeparatorChar); + var d = dependency.Replace('/', Path.DirectorySeparatorChar); + + var path = Path.Combine(p, ParseFilePath(d)); required.Add(path); - usedPackages.Add(GetPackageName(package)); + usedPackages.Add(GetPackageName(p)); + return this; } @@ -58,8 +62,11 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// public Dependencies Add(string package) { - required.Add(package); - usedPackages.Add(GetPackageName(package)); + var p = package.Replace('/', Path.DirectorySeparatorChar); + + required.Add(p); + usedPackages.Add(GetPackageName(p)); + return this; } } From df4f2a367b6b440052cb4afb3c96f880388148ee Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 3 Nov 2023 13:42:32 +0100 Subject: [PATCH 037/122] C#: Update unit tests. --- csharp/extractor/Semmle.Extraction.Tests/Assets.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.Tests/Assets.cs b/csharp/extractor/Semmle.Extraction.Tests/Assets.cs index c328762c93b..90781d13b30 100644 --- a/csharp/extractor/Semmle.Extraction.Tests/Assets.cs +++ b/csharp/extractor/Semmle.Extraction.Tests/Assets.cs @@ -52,9 +52,11 @@ namespace Semmle.Extraction.Tests // Verify Assert.True(success); Assert.Equal(2, dependencies.Required.Count()); + + var normalizedPaths = dependencies.Required.Select(FixExpectedPathOnWindows); // Required references - Assert.Contains("microsoft.netframework.referenceassemblies/1.0.3", dependencies.Required); - Assert.Contains("microsoft.netframework.referenceassemblies.net48/1.0.3", dependencies.Required); + Assert.Contains("microsoft.netframework.referenceassemblies/1.0.3", normalizedPaths); + Assert.Contains("microsoft.netframework.referenceassemblies.net48/1.0.3", normalizedPaths); // Used packages Assert.Contains("microsoft.netframework.referenceassemblies", dependencies.UsedPackages); Assert.Contains("microsoft.netframework.referenceassemblies.net48", dependencies.UsedPackages); From 245f475fdb810b9e38315ff9e8994847b1937a66 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 3 Nov 2023 12:27:38 +0000 Subject: [PATCH 038/122] Swift: Remove duplicate model. --- swift/ql/lib/codeql/swift/frameworks/StandardLibrary/Data.qll | 3 --- 1 file changed, 3 deletions(-) diff --git a/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/Data.qll b/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/Data.qll index 233d07aebf2..30755bb97c7 100644 --- a/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/Data.qll +++ b/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/Data.qll @@ -45,9 +45,6 @@ private class DataSummaries extends SummaryModelCsv { ";Data;true;shuffled(using:);;;Argument[-1];ReturnValue;taint", ";Data;true;trimmingPrefix(_:);;;Argument[-1];ReturnValue;taint", ";Data;true;trimmingPrefix(while:);;;Argument[-1];ReturnValue;taint", - ";Data;true;withUnsafeBytes(_:);;;Argument[-1];Argument[0].Parameter[0].CollectionElement;taint", - ";Data;true;withUnsafeBytes(_:);;;Argument[-1].CollectionElement;Argument[0].Parameter[0].CollectionElement;taint", - ";Data;true;withUnsafeBytes(_:);;;Argument[0].ReturnValue;ReturnValue;value", ";Data;true;withUnsafeMutableBytes(_:);;;Argument[-1];Argument[0].Parameter[0].CollectionElement;taint", ";Data;true;withUnsafeMutableBytes(_:);;;Argument[-1].CollectionElement;Argument[0].Parameter[0].CollectionElement;taint", ";Data;true;withUnsafeMutableBytes(_:);;;Argument[0].Parameter[0].CollectionElement;Argument[-1].CollectionElement;value", From 0d7943031cc6cc6dcf08145939a32a667875a2b8 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 3 Nov 2023 14:22:56 +0000 Subject: [PATCH 039/122] Swift: Generalize subscript assignment storeStep. --- .../swift/dataflow/internal/DataFlowPrivate.qll | 4 ++-- .../dataflow/taint/libraries/data.swift | 12 ++++++------ .../library-tests/dataflow/taint/libraries/int.swift | 8 ++++---- .../dataflow/taint/libraries/unsafepointer.swift | 8 ++++---- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowPrivate.qll b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowPrivate.qll index 181abb28af8..8b417a74cae 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowPrivate.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowPrivate.qll @@ -1075,12 +1075,12 @@ predicate storeStep(Node node1, ContentSet c, Node node2) { c.isSingleton(any(Content::CollectionContent ac)) ) or - // array assignment `a[n] = x` + // subscript assignment `a[n] = x` exists(AssignExpr assign, SubscriptExpr subscript | node1.asExpr() = assign.getSource() and node2.(PostUpdateNode).getPreUpdateNode().asExpr() = subscript.getBase() and subscript = assign.getDest() and - subscript.getBase().getType() instanceof ArrayType and + not any(DictionarySubscriptNode n).getExpr() = subscript and c.isSingleton(any(Content::CollectionContent ac)) ) or diff --git a/swift/ql/test/library-tests/dataflow/taint/libraries/data.swift b/swift/ql/test/library-tests/dataflow/taint/libraries/data.swift index c8fed3e189c..eddfae11b0d 100644 --- a/swift/ql/test/library-tests/dataflow/taint/libraries/data.swift +++ b/swift/ql/test/library-tests/dataflow/taint/libraries/data.swift @@ -310,13 +310,13 @@ func taintThroughData() { buffer in buffer[0] = source() as! UInt8 - sink(arg: buffer) - sink(arg: buffer[0]) // $ MISSING: tainted=312 + sink(arg: buffer) // $ tainted=312 + sink(arg: buffer[0]) // $ tainted=312 return source() as! Int }) sink(arg: result46!) // $ tainted=316 - sink(arg: data46) // $ MISSING: tainted=312 + sink(arg: data46) // $ tainted=312 let dataTainted47 = source() as! Data let result47 = dataTainted47.withUnsafeBytes({ @@ -334,11 +334,11 @@ func taintThroughData() { buffer in buffer[0] = source() as! UInt8 - sink(arg: buffer) - sink(arg: buffer[0]) // $ MISSING: tainted=336 + sink(arg: buffer) // $ tainted=336 + sink(arg: buffer[0]) // $ tainted=336 return source() as! Int }) sink(arg: result48) // $ tainted=340 - sink(arg: data48) // $ MISSING: tainted=336 + sink(arg: data48) // $ tainted=336 } diff --git a/swift/ql/test/library-tests/dataflow/taint/libraries/int.swift b/swift/ql/test/library-tests/dataflow/taint/libraries/int.swift index 3ea65132e87..d75d6d55d98 100644 --- a/swift/ql/test/library-tests/dataflow/taint/libraries/int.swift +++ b/swift/ql/test/library-tests/dataflow/taint/libraries/int.swift @@ -151,12 +151,12 @@ func taintCollections(array: inout Array, contiguousArray: inout Contiguous }) contiguousArray[0] = source2() - sink(arg: contiguousArray) - sink(arg: contiguousArray[0]) // $ MISSING: tainted=153 + sink(arg: contiguousArray) // $ tainted=153 + sink(arg: contiguousArray[0]) // $ tainted=153 contiguousArray.withContiguousStorageIfAvailable({ buffer in - sink(arg: buffer) - sink(arg: buffer[0]) // $ MISSING: tainted=153 + sink(arg: buffer) // $ tainted=153 + sink(arg: buffer[0]) // $ tainted=153 }) dictionary[0] = source2() diff --git a/swift/ql/test/library-tests/dataflow/taint/libraries/unsafepointer.swift b/swift/ql/test/library-tests/dataflow/taint/libraries/unsafepointer.swift index 032f0972f18..57247e0acc6 100644 --- a/swift/ql/test/library-tests/dataflow/taint/libraries/unsafepointer.swift +++ b/swift/ql/test/library-tests/dataflow/taint/libraries/unsafepointer.swift @@ -59,8 +59,8 @@ func taintBuffer(buffer: UnsafeMutableBufferPointer) { buffer[0] = sourceUInt8() - sink(arg: buffer[0]) // $ MISSING: tainted=60 - sink(arg: buffer) + sink(arg: buffer[0]) // $ tainted=60 + sink(arg: buffer) // $ tainted=60 } func testMutatingBufferInCall(ptr: UnsafeMutablePointer) { @@ -71,8 +71,8 @@ func testMutatingBufferInCall(ptr: UnsafeMutablePointer) { taintBuffer(buffer: buffer) // mutates `buffer` contents with a tainted value - sink(arg: buffer[0]) // $ MISSING: tainted=60 - sink(arg: buffer) + sink(arg: buffer[0]) // $ tainted=60 + sink(arg: buffer) // $ tainted=60 } From 71ad6a826239cc2bf8b10bb2f1b511dca197fb76 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 3 Nov 2023 14:45:12 +0000 Subject: [PATCH 040/122] Swift: Change note. --- swift/ql/lib/change-notes/2023-11-03-subscript.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 swift/ql/lib/change-notes/2023-11-03-subscript.md diff --git a/swift/ql/lib/change-notes/2023-11-03-subscript.md b/swift/ql/lib/change-notes/2023-11-03-subscript.md new file mode 100644 index 00000000000..c90e48c0465 --- /dev/null +++ b/swift/ql/lib/change-notes/2023-11-03-subscript.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Generalized the data flow model for subscript writes (`a[index] = b`) so that it applies to subscripts on all kinds of objects, not just arrays. From 06191922c3a55a6f4f41d4a9892656a064e84f0d Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 3 Nov 2023 15:12:31 +0000 Subject: [PATCH 041/122] Swift: Correct a couple of FilePath models. --- .../codeql/swift/frameworks/StandardLibrary/FilePath.qll | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/FilePath.qll b/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/FilePath.qll index c1e82a1522c..10d97c42518 100644 --- a/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/FilePath.qll +++ b/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/FilePath.qll @@ -31,8 +31,10 @@ private class FilePathSummaries extends SummaryModelCsv { ";FilePath;true;init(root:_:);;;Argument[0..1];ReturnValue;taint", ";FilePath;true;init(root:components:);;;Argument[0..1];ReturnValue;taint", ";FilePath;true;encode(to:);;;Argument[-1];Argument[0];taint", - ";FilePath;true;withCString(_:);;;Argument[-1];Argument[0].Parameter[0];taint", - ";FilePath;true;withPlatformString(_:);;;Argument[-1];Argument[0].Parameter[0];taint", + ";FilePath;true;withCString(_:);;;Argument[-1];Argument[0].Parameter[0].CollectionElement;taint", + ";FilePath;true;withCString(_:);;;Argument[0].ReturnValue;ReturnValue;taint", + ";FilePath;true;withPlatformString(_:);;;Argument[-1];Argument[0].Parameter[0].CollectionElement;taint", + ";FilePath;true;withPlatformString(_:);;;Argument[0].ReturnValue;ReturnValue;taint", ";FilePath;true;append(_:);;;Argument[0];Argument[-1];taint", ";FilePath;true;appending(_:);;;Argument[-1..0];ReturnValue;taint", ";FilePath;true;lexicallyNormalized();;;Argument[-1];ReturnValue;taint", From a59ed5bc49b173971cb1470bbc84be0ade195c66 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 3 Nov 2023 15:36:07 +0000 Subject: [PATCH 042/122] Swift: Add test cases. --- .../dataflow/taint/libraries/nsstring.swift | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/swift/ql/test/library-tests/dataflow/taint/libraries/nsstring.swift b/swift/ql/test/library-tests/dataflow/taint/libraries/nsstring.swift index 3be4e4d1264..61b06488adf 100644 --- a/swift/ql/test/library-tests/dataflow/taint/libraries/nsstring.swift +++ b/swift/ql/test/library-tests/dataflow/taint/libraries/nsstring.swift @@ -25,8 +25,8 @@ protocol NSMutableCopying { class NSString : NSObject, NSCopying, NSMutableCopying { struct EncodingConversionOptions : OptionSet { let rawValue: Int } - struct CompareOptions : OptionSet { let rawValue: Int } + struct EnumerationOptions : OptionSet { let rawValue: Int } init(characters: UnsafePointer, length: Int) {} init(charactersNoCopy characters: UnsafeMutablePointer, length: Int, freeWhenDone freeBuffer: Bool) {} @@ -83,6 +83,7 @@ class NSString : NSObject, NSCopying, NSMutableCopying { func folding(options: NSString.CompareOptions = [], locale: Locale?) -> String { return "" } func applyingTransform(_ transform: StringTransform, reverse: Bool) -> String? { return "" } func enumerateLines(_ block: @escaping (String, UnsafeMutablePointer) -> Void) { } + func enumerateSubstrings(in range: NSRange, options opts: NSString.EnumerationOptions = [], using block: @escaping (String?, NSRange, NSRange, UnsafeMutablePointer) -> Void) { } func replacingOccurrences(of target: String, with replacement: String) -> String { return "" } func replacingOccurrences(of target: String, with replacement: String, options: NSString.CompareOptions = [], range searchRange: NSRange) -> String { return "" } func propertyList() -> Any { return 0 } @@ -136,8 +137,7 @@ class NSMutableString : NSString { func setString(_ aString: String) {} } -class NSArray : NSObject { -} +class NSArray : NSObject { } struct _NSRange { init(location: Int, length: Int) {} @@ -485,3 +485,13 @@ func taintThroughData() { let str2 = NSString(data: data1, encoding: 0)! sink(arg: str2) // $ tainted=482 } + +func moreTests() { + let myTainted = sourceNSString() + let myRange = NSRange(location:0, length: 128) + + sink(arg: myTainted.enumerateSubstrings(in: myRange, options: [], using: { + substring, substringRange, enclosingRange, stop in + sink(arg: substring!) // $ MISSING: tainted= + })) +} From d0ca7045d4a14f472351e2ee8683e1593e1c0555 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 3 Nov 2023 15:59:24 +0000 Subject: [PATCH 043/122] Swift: Fix some NSString models. --- .../codeql/swift/frameworks/StandardLibrary/NsString.qll | 7 ++++--- .../library-tests/dataflow/taint/libraries/nsstring.swift | 8 ++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/NsString.qll b/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/NsString.qll index 2044c7757a2..70a05abea52 100644 --- a/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/NsString.qll +++ b/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/NsString.qll @@ -83,7 +83,7 @@ private class NsStringSummaries extends SummaryModelCsv { ";NSString;true;lowercased(with:);;;Argument[-1];ReturnValue;taint", ";NSString;true;uppercased(with:);;;Argument[-1];ReturnValue;taint", ";NSString;true;capitalized(with:);;;Argument[-1];ReturnValue;taint", - ";NSString;true;components(separatedBy:);;;Argument[-1];ReturnValue;taint", + ";NSString;true;components(separatedBy:);;;Argument[-1];ReturnValue.CollectionElement;taint", ";NSString;true;trimmingCharacters(in:);;;Argument[-1];ReturnValue;taint", ";NSString;true;substring(from:);;;Argument[-1];ReturnValue;taint", ";NSString;true;substring(with:);;;Argument[-1];ReturnValue;taint", @@ -102,14 +102,15 @@ private class NsStringSummaries extends SummaryModelCsv { ";NSString;true;stringEncoding(for:encodingOptions:convertedString:usedLossyCompression:);;;Argument[0];Argument[2];taint", ";NSString;true;data(using:);;;Argument[-1];ReturnValue;taint", ";NSString;true;data(using:allowLossyConversion:);;;Argument[-1];ReturnValue;taint", - ";NSString;true;path(withComponents:);;;Argument[0];ReturnValue;taint", + ";NSString;true;path(withComponents:);;;Argument[0].CollectionElement;ReturnValue;taint", ";NSString;true;completePath(into:caseSensitive:matchesInto:filterTypes:);;;Argument[-1];Argument[0];taint", ";NSString;true;completePath(into:caseSensitive:matchesInto:filterTypes:);;;Argument[-1];Argument[2];taint", ";NSString;true;getFileSystemRepresentation(_:maxLength:);;;Argument[-1];Argument[0];taint", ";NSString;true;appendingPathComponent(_:);;;Argument[-1..0];ReturnValue;taint", ";NSString;true;appendingPathComponent(_:conformingTo:);;;Argument[-1..0];ReturnValue;taint", ";NSString;true;appendingPathExtension(_:);;;Argument[-1..0];ReturnValue;taint", - ";NSString;true;strings(byAppendingPaths:);;;Argument[-1..0];ReturnValue;taint", + ";NSString;true;strings(byAppendingPaths:);;;Argument[-1];ReturnValue;taint", + ";NSString;true;strings(byAppendingPaths:);;;Argument[0].CollectionElement;ReturnValue;taint", ";NSString;true;addingPercentEncoding(withAllowedCharacters:);;;Argument[-1];ReturnValue;taint", ";NSString;true;string(withCString:);;;Argument[0];ReturnValue;taint", ";NSString;true;string(withCString:length:);;;Argument[0];ReturnValue;taint", diff --git a/swift/ql/test/library-tests/dataflow/taint/libraries/nsstring.swift b/swift/ql/test/library-tests/dataflow/taint/libraries/nsstring.swift index 61b06488adf..85972912884 100644 --- a/swift/ql/test/library-tests/dataflow/taint/libraries/nsstring.swift +++ b/swift/ql/test/library-tests/dataflow/taint/libraries/nsstring.swift @@ -275,8 +275,8 @@ func taintThroughInterpolatedStrings() { sink(arg: sourceNSString().replacingOccurrences(of: "a", with: "b", range: NSRange(location: 0, length: 10))) // $ tainted=275 sink(arg: harmless.replacingOccurrences(of: "a", with: sourceString(), range: NSRange(location: 0, length: 10))) // $ tainted=276 sink(arg: NSString.path(withComponents: ["a", "b", "c"])) - sink(arg: NSString.path(withComponents: sourceStringArray())) // $ tainted=278 - sink(arg: NSString.path(withComponents: ["a", sourceString(), "c"])) // $ MISSING: tainted= + sink(arg: NSString.path(withComponents: sourceStringArray())) // $ MISSING: tainted=278 + sink(arg: NSString.path(withComponents: ["a", sourceString(), "c"])) // $ tainted=279 sink(arg: NSString.string(withCString: sourceCString())) // $ tainted=280 sink(arg: NSString.string(withCString: sourceCString(), length: 128)) // $ tainted=281 sink(arg: NSString.string(withContentsOfFile: sourceString())) // $ tainted=282 @@ -306,8 +306,8 @@ func taintThroughInterpolatedStrings() { sink(arg: harmless.strings(byAppendingPaths: [""])) sink(arg: harmless.strings(byAppendingPaths: [""])[0]) - sink(arg: harmless.strings(byAppendingPaths: [sourceString()])) // $ MISSING: tainted= - sink(arg: harmless.strings(byAppendingPaths: [sourceString()])[0]) // $ MISSING: tainted= + sink(arg: harmless.strings(byAppendingPaths: [sourceString()])) // $ tainted=309 + sink(arg: harmless.strings(byAppendingPaths: [sourceString()])[0]) // $ tainted=310 sink(arg: sourceNSString().strings(byAppendingPaths: [""])) // $ tainted=311 sink(arg: sourceNSString().strings(byAppendingPaths: [""])[0]) // $ tainted=312 From 989a5467965d377e69fd92100c6eb0d34b80a6e9 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 3 Nov 2023 16:17:41 +0000 Subject: [PATCH 044/122] Swift: Model the NSString.enumerate* methods. --- .../lib/codeql/swift/frameworks/StandardLibrary/NsString.qll | 4 ++++ .../library-tests/dataflow/taint/libraries/nsstring.swift | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/NsString.qll b/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/NsString.qll index 70a05abea52..64af152fced 100644 --- a/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/NsString.qll +++ b/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/NsString.qll @@ -119,6 +119,10 @@ private class NsStringSummaries extends SummaryModelCsv { ";NSString;true;addingPercentEscapes(using:);;;Argument[-1];ReturnValue;taint", ";NSString;true;replacingPercentEscapes(using:);;;Argument[-1];ReturnValue;taint", ";NSString;true;applyTransform(_:reverse:range:updatedRange:);;;Argument[-1];ReturnValue;taint", + ";NSString;true;enumerateLines(_:);;;Argument[-1];Argument[0].Parameter[0];taint", + ";NSString;true;enumerateSubstrings(in:options:using:);;;Argument[-1];Argument[2].Parameter[0].OptionalSome;taint", + ";NSString;true;enumerateSubstrings(in:options:using:);;;Argument[2].Parameter[0].OptionalSome;Argument[-1];taint", + ";NSString;true;enumerateLinguisticTags(in:scheme:options:orthography:using:);;;Argument[-1];Argument[4].Parameter[0].OptionalSome;taint", ";NSMutableString;true;append(_:);;;Argument[0];Argument[-1];taint", ";NSMutableString;true;insert(_:at:);;;Argument[0];Argument[-1];taint", ";NSMutableString;true;replaceCharacters(in:with:);;;Argument[1];Argument[-1];taint", diff --git a/swift/ql/test/library-tests/dataflow/taint/libraries/nsstring.swift b/swift/ql/test/library-tests/dataflow/taint/libraries/nsstring.swift index 85972912884..b26110b79b3 100644 --- a/swift/ql/test/library-tests/dataflow/taint/libraries/nsstring.swift +++ b/swift/ql/test/library-tests/dataflow/taint/libraries/nsstring.swift @@ -355,7 +355,7 @@ func taintThroughInterpolatedStrings() { })) sink(arg: sourceNSString().enumerateLines({ line, stop in - sink(arg: line) // $ MISSING: tainted= + sink(arg: line) // $ tainted=356 sink(arg: stop) })) @@ -492,6 +492,6 @@ func moreTests() { sink(arg: myTainted.enumerateSubstrings(in: myRange, options: [], using: { substring, substringRange, enclosingRange, stop in - sink(arg: substring!) // $ MISSING: tainted= + sink(arg: substring!) // $ tainted=490 })) } From 041dc190557c094f5ee2deb7bbadda058150e840 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 3 Nov 2023 16:17:54 +0000 Subject: [PATCH 045/122] Swift: Change note. --- swift/ql/lib/change-notes/2023-11-03-nsstring.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 swift/ql/lib/change-notes/2023-11-03-nsstring.md diff --git a/swift/ql/lib/change-notes/2023-11-03-nsstring.md b/swift/ql/lib/change-notes/2023-11-03-nsstring.md new file mode 100644 index 00000000000..458073a9434 --- /dev/null +++ b/swift/ql/lib/change-notes/2023-11-03-nsstring.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added taint flow models for the `NSString.enumerate*` methods. From abcb5a7a958e4a91c8f96b1145ec2bcd2ce1dcec Mon Sep 17 00:00:00 2001 From: erik-krogh Date: Sun, 5 Nov 2023 19:24:59 +0100 Subject: [PATCH 046/122] remove the remaining yarn files --- javascript/extractor/lib/typescript/yarn.lock | 13 ------------- javascript/extractor/lib/typescript/yarnrc-build | 1 - 2 files changed, 14 deletions(-) delete mode 100644 javascript/extractor/lib/typescript/yarn.lock delete mode 100644 javascript/extractor/lib/typescript/yarnrc-build diff --git a/javascript/extractor/lib/typescript/yarn.lock b/javascript/extractor/lib/typescript/yarn.lock deleted file mode 100644 index d72f714a4fb..00000000000 --- a/javascript/extractor/lib/typescript/yarn.lock +++ /dev/null @@ -1,13 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@types/node@18.15.3": - version "18.15.3" - resolved "https://registry.npmjs.org/@types/node/-/node-18.15.3.tgz" - integrity sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw== - -typescript@5.2.2: - version "5.2.2" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" - integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== diff --git a/javascript/extractor/lib/typescript/yarnrc-build b/javascript/extractor/lib/typescript/yarnrc-build deleted file mode 100644 index e9b20e22b8a..00000000000 --- a/javascript/extractor/lib/typescript/yarnrc-build +++ /dev/null @@ -1 +0,0 @@ -yarn-offline-mirror "./yarn-mirror" From aa521ecd59bab482a632d7cb21352ab9687852c9 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 3 Nov 2023 14:37:57 +0100 Subject: [PATCH 047/122] C#: Include more libraries in flow summaries test --- .../dataflow/library/FlowSummaries.expected | 3960 +++++++++++++++++ .../library/FlowSummariesFiltered.expected | 2213 +++++++++ .../library-tests/dataflow/library/options | 5 +- 3 files changed, 6177 insertions(+), 1 deletion(-) diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected index fd002b2f31b..9c113c1df49 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected @@ -1,4 +1,57 @@ summary +| Dapper;CustomPropertyTypeMap;false;CustomPropertyTypeMap;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Dapper;DynamicParameters;false;Output<>;(T,System.Linq.Expressions.Expression>,System.Nullable,System.Nullable);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper+GridReader;false;Read<,,,,,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper+GridReader;false;Read<,,,,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper+GridReader;false;Read<,,,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper+GridReader;false;Read<,,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper+GridReader;false;Read<,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper+GridReader;false;Read<,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper+GridReader;false;Read<>;(System.Type[],System.Func,System.String,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper;false;QueryAsync<,,,,,,,>;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper;false;QueryAsync<,,,,,,>;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper;false;QueryAsync<,,,,,>;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper;false;QueryAsync<,,,,>;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper;false;QueryAsync<,,,>;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper;false;QueryAsync<,,>;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper;false;add_QueryCachePurged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper;false;remove_QueryCachePurged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;AddSingleton;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;AddTransient;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,,,,,>;(Funq.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,,,,,>;(System.String,Funq.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,,,,>;(Funq.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,,,,>;(System.String,Funq.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,,,>;(Funq.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,,,>;(System.String,Funq.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,,>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,,>;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,>;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,>;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<>;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;RegisterFactory<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Funq;Func<,,,,,,,>;false;BeginInvoke;(T1,T2,T3,T4,T5,T6,T7,System.AsyncCallback,System.Object);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| Funq;Func<,,,,,,>;false;BeginInvoke;(T1,T2,T3,T4,T5,T6,System.AsyncCallback,System.Object);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| Funq;Func<,,,,,>;false;BeginInvoke;(T1,T2,T3,T4,T5,System.AsyncCallback,System.Object);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| Funq;IInitializable<>;true;InitializedBy;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Funq;ServiceEntry<,>;false;InitializedBy;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Microsoft.AspNetCore.Authentication.Cookies;CookieAuthenticationEvents;false;set_OnCheckSlidingExpiration;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Microsoft.AspNetCore.Authentication.Cookies;CookieAuthenticationEvents;false;set_OnRedirectToAccessDenied;(System.Func,System.Threading.Tasks.Task>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Microsoft.AspNetCore.Authentication.Cookies;CookieAuthenticationEvents;false;set_OnRedirectToLogin;(System.Func,System.Threading.Tasks.Task>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | @@ -1783,6 +1836,2026 @@ summary | Newtonsoft.Json;JsonSerializerSettings;false;set_ReferenceResolverProvider;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Newtonsoft.Json;JsonValidatingReader;false;add_ValidationEventHandler;(Newtonsoft.Json.Schema.ValidationEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Newtonsoft.Json;JsonValidatingReader;false;remove_ValidationEventHandler;(Newtonsoft.Json.Schema.ValidationEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Admin;AdminUsersFeature;false;RemoveFromUserForm;(System.Predicate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Admin;AdminUsersFeature;false;set_OnAfterCreateUser;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Admin;AdminUsersFeature;false;set_OnAfterDeleteUser;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Admin;AdminUsersFeature;false;set_OnAfterUpdateUser;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Admin;AdminUsersFeature;false;set_OnBeforeCreateUser;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Admin;AdminUsersFeature;false;set_OnBeforeDeleteUser;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Admin;AdminUsersFeature;false;set_OnBeforeUpdateUser;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Admin;AdminUsersFeature;false;set_ValidateFn;(ServiceStack.Auth.ValidateAsyncFn);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.AsyncEx;TaskCompletionSourceExtensions;false;TryCompleteFromCompletedTask<>;(System.Threading.Tasks.TaskCompletionSource,System.Threading.Tasks.Task,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;ApiKeyAuthProvider;false;set_CreateApiKeyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;ApiKeyAuthProvider;false;set_GenerateApiKey;(ServiceStack.Auth.CreateApiKeyDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthProvider;false;set_AccountLockedValidator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthProvider;false;set_CustomValidationFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthProvider;false;set_LoadUserAuthFilter;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthProvider;false;set_LoadUserAuthInfoFilterAsync;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.Task>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthProviderSync;false;set_AccountLockedValidator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthProviderSync;false;set_CustomValidationFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthProviderSync;false;set_LoadUserAuthFilter;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthenticateService;false;Init;(System.Func,ServiceStack.Auth.IAuthProvider[]);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthenticateService;false;set_AuthResponseDecorator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthenticateService;false;set_CurrentSessionFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthenticateService;false;set_ValidateFn;(ServiceStack.Auth.ValidateFn);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;CreateApiKeyDelegate;false;BeginInvoke;(System.String,System.String,System.Int32,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProvider;false;CreateJwt;(ServiceStack.Text.JsonObject,ServiceStack.Text.JsonObject,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProviderReader;false;set_CreateHeaderFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProviderReader;false;set_CreatePayloadFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProviderReader;false;set_PopulateSessionFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProviderReader;false;set_PreValidateJwtPayloadFilter;(System.Func,System.String>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProviderReader;false;set_ResolveJwtId;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProviderReader;false;set_ResolveRefreshJwtId;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProviderReader;false;set_ResolveUnixTime;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProviderReader;false;set_ValidateRefreshToken;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProviderReader;false;set_ValidateToken;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;MicrosoftGraphAuthProvider;false;set_PhotoUrl;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;NetCoreIdentityAuthProvider;false;set_AutoSignInSessionsMatching;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;NetCoreIdentityAuthProvider;false;set_CreateClaimsPrincipal;(System.Func,ServiceStack.Auth.IAuthSession,ServiceStack.Web.IRequest,System.Security.Claims.ClaimsPrincipal>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;NetCoreIdentityAuthProvider;false;set_PopulateSessionFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;OAuth2Provider;false;set_ResolveUnknownDisplayName;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;OAuthProvider;false;set_VerifyAccessTokenAsync;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;OAuthProviderSync;false;set_VerifyAccessToken;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;Pbkdf2DeriveKeyDelegate;false;BeginInvoke;(System.String,System.Byte[],Microsoft.AspNetCore.Cryptography.KeyDerivation.KeyDerivationPrf,System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;Pbkdf2Provider;false;set_DeriveKey;(ServiceStack.Auth.Pbkdf2DeriveKeyDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;RegisterService;false;set_ValidateFn;(ServiceStack.Auth.ValidateFn);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;ValidateAsyncFn;false;BeginInvoke;(ServiceStack.IServiceBase,System.String,System.Object,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;ValidateFn;false;BeginInvoke;(ServiceStack.IServiceBase,System.String,System.Object,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Configuration;AppSettingsBase;false;set_ParsingStrategy;(ServiceStack.Configuration.ParsingStrategyDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Configuration;ParsingStrategyDelegate;false;BeginInvoke;(System.String,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Data;DbConnectionFactory;false;DbConnectionFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Attributes;AttributedValidatorFactory;false;AttributedValidatorFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;AccessorCache<>;false;GetCachedAccessor<>;(System.Reflection.MemberInfo,System.Linq.Expressions.Expression>,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;CollectionPropertyRule<,>;false;CollectionPropertyRule;(System.Reflection.MemberInfo,System.Func,System.Linq.Expressions.LambdaExpression,System.Func,System.Type,System.Type);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;CollectionPropertyRule<,>;false;CollectionPropertyRule;(System.Reflection.MemberInfo,System.Func,System.Linq.Expressions.LambdaExpression,System.Func,System.Type,System.Type);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;CollectionPropertyRule<,>;false;Create;(System.Linq.Expressions.Expression>>,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;CollectionPropertyRule<,>;false;Create;(System.Linq.Expressions.Expression>>,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;CollectionPropertyRule<,>;false;set_Filter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;CollectionPropertyRule<,>;false;set_IndexBuilder;(System.Func,TElement,System.Int32,System.String>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;CoerceToNonGeneric<,>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;CoerceToNonGeneric<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;CoerceToNonGeneric<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;CoerceToNonGeneric<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;CoerceToNonGeneric<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;CoerceToNonGeneric<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;CoerceToNonGeneric<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;CoerceToNonGeneric<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;CoerceToNonGeneric<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;GetMember<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;IConfigurable<,>;true;Configure;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;IncludeRule<>;false;Create;(ServiceStack.FluentValidation.IValidator,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;IncludeRule<>;false;Create<>;(System.Func,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;IncludeRule<>;false;Create<>;(System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;IncludeRule<>;false;IncludeRule;(ServiceStack.FluentValidation.IValidator,System.Func,System.Type,System.Type);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;IncludeRule<>;false;IncludeRule;(System.Func>,System.Func,System.Type,System.Type,System.Type);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;IncludeRule<>;false;IncludeRule;(System.Func>,System.Func,System.Type,System.Type,System.Type);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;MemberAccessor<,>;false;MemberAccessor;(System.Linq.Expressions.Expression>,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;MemberAccessor<,>;false;op_Implicit;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;ApplyAsyncCondition;(System.Func>,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;ApplyCondition;(System.Func,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;ApplySharedAsyncCondition;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;ApplySharedCondition;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;Create<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;Create<,>;(System.Linq.Expressions.Expression>,System.Func,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;Create<,>;(System.Linq.Expressions.Expression>,System.Func,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;PropertyRule;(System.Reflection.MemberInfo,System.Func,System.Linq.Expressions.LambdaExpression,System.Func,System.Type,System.Type);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;PropertyRule;(System.Reflection.MemberInfo,System.Func,System.Linq.Expressions.LambdaExpression,System.Func,System.Type,System.Type);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;SetDisplayName;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;set_MessageBuilder;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;set_OnFailure;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;set_Transformer;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;RuleBuilder<,>;false;Configure;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;RuleBuilder<,>;false;Configure;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;RuleBuilder<,>;false;SetValidator<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;RuleBuilder<,>;false;SetValidator<>;(System.Func,System.String[]);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;RuleBuilder<,>;false;SetValidator<>;(System.Func,System.String[]);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;RuleBuilder<,>;false;Transform<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Resources;LanguageStringSource;false;LanguageStringSource;(System.Func,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Resources;LazyStringSource;false;LazyStringSource;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Results;ValidationFailure;false;set_ErrorCodeResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ITestPropertyChain<>;true;Property<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;TestValidationResult<>;false;ShouldHaveValidationErrorFor<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;TestValidationResult<>;false;ShouldNotHaveValidationErrorFor<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;ShouldHaveChildValidator<,>;(ServiceStack.FluentValidation.IValidator,System.Linq.Expressions.Expression>,System.Type);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;ShouldHaveValidationErrorFor<,>;(ServiceStack.FluentValidation.IValidator,System.Linq.Expressions.Expression>,T,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;ShouldHaveValidationErrorFor<,>;(ServiceStack.FluentValidation.IValidator,System.Linq.Expressions.Expression>,TValue,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;ShouldHaveValidationErrorForAsync<,>;(ServiceStack.FluentValidation.IValidator,System.Linq.Expressions.Expression>,T,System.Threading.CancellationToken,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;ShouldHaveValidationErrorForAsync<,>;(ServiceStack.FluentValidation.IValidator,System.Linq.Expressions.Expression>,TValue,System.Threading.CancellationToken,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;ShouldNotHaveValidationErrorFor<,>;(ServiceStack.FluentValidation.IValidator,System.Linq.Expressions.Expression>,T,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;ShouldNotHaveValidationErrorFor<,>;(ServiceStack.FluentValidation.IValidator,System.Linq.Expressions.Expression>,TValue,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;ShouldNotHaveValidationErrorForAsync<,>;(ServiceStack.FluentValidation.IValidator,System.Linq.Expressions.Expression>,T,System.Threading.CancellationToken,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;ShouldNotHaveValidationErrorForAsync<,>;(ServiceStack.FluentValidation.IValidator,System.Linq.Expressions.Expression>,TValue,System.Threading.CancellationToken,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;TestValidate<>;(ServiceStack.FluentValidation.IValidator,T,System.Action>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;TestValidateAsync<>;(ServiceStack.FluentValidation.IValidator,T,System.Action>,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;When;(System.Collections.Generic.IEnumerable,System.Func,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;WhenAll;(System.Collections.Generic.IEnumerable,System.Func,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidatorTester<,>;false;ValidatorTester;(System.Linq.Expressions.Expression>,ServiceStack.FluentValidation.IValidator,TValue);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;AbstractComparisonValidator;false;AbstractComparisonValidator;(System.Func,System.Reflection.MemberInfo,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;AbstractComparisonValidator;false;AbstractComparisonValidator;(System.Func,System.Reflection.MemberInfo,System.String,ServiceStack.FluentValidation.Resources.IStringSource);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;AsyncPredicateValidator;false;AsyncPredicateValidator;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;ChildValidatorAdaptor<,>;false;ChildValidatorAdaptor;(System.Func>,System.Type);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;CustomValidator<>;false;CustomValidator;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;CustomValidator<>;false;CustomValidator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;EqualValidator;false;EqualValidator;(System.Func,System.Reflection.MemberInfo,System.String,System.Collections.IEqualityComparer);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;ExactLengthValidator;false;ExactLengthValidator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;GreaterThanOrEqualValidator;false;GreaterThanOrEqualValidator;(System.Func,System.Reflection.MemberInfo,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;GreaterThanValidator;false;GreaterThanValidator;(System.Func,System.Reflection.MemberInfo,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;LengthValidator;false;LengthValidator;(System.Func,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;LengthValidator;false;LengthValidator;(System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;LengthValidator;false;set_MaxFunc;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;LengthValidator;false;set_MinFunc;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;LessThanOrEqualValidator;false;LessThanOrEqualValidator;(System.Func,System.Reflection.MemberInfo,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;LessThanValidator;false;LessThanValidator;(System.Func,System.Reflection.MemberInfo,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;MaximumLengthValidator;false;MaximumLengthValidator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;MinimumLengthValidator;false;MinimumLengthValidator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;NotEqualValidator;false;NotEqualValidator;(System.Func,System.Reflection.MemberInfo,System.String,System.Collections.IEqualityComparer);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;OnFailureValidator<>;false;OnFailureValidator;(ServiceStack.FluentValidation.Validators.IPropertyValidator,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;PolymorphicValidator<,>;false;Add<>;(System.Func>,System.String[]);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;PolymorphicValidator<,>;false;Add<>;(System.Func>,System.String[]);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;PredicateValidator+Predicate;false;BeginInvoke;(System.Object,System.Object,ServiceStack.FluentValidation.Validators.PropertyValidatorContext,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;PredicateValidator;false;PredicateValidator;(ServiceStack.FluentValidation.Validators.PredicateValidator+Predicate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;RegularExpressionValidator;false;RegularExpressionValidator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;RegularExpressionValidator;false;RegularExpressionValidator;(System.Func,System.Text.RegularExpressions.RegexOptions);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;RegularExpressionValidator;false;RegularExpressionValidator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| ServiceStack.FluentValidation;AbstractValidator<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| ServiceStack.FluentValidation;AbstractValidator<>;false;Include<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;RemovePropertyRules;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;RuleFor<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;RuleForEach<>;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;RuleSet;(ServiceStack.ApplyTo,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;RuleSet;(System.String,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;Transform<,>;(System.Linq.Expressions.Expression>,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;Transform<,>;(System.Linq.Expressions.Expression>,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;Transform<,>;(System.Linq.Expressions.Expression>,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;Transform<,>;(System.Linq.Expressions.Expression>,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;TransformForEach<,>;(System.Linq.Expressions.Expression>>,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;TransformForEach<,>;(System.Linq.Expressions.Expression>>,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;TransformForEach<,>;(System.Linq.Expressions.Expression>>,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;TransformForEach<,>;(System.Linq.Expressions.Expression>>,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;Unless;(System.Func,System.Boolean>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;Unless;(System.Func,System.Boolean>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;Unless;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;Unless;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;UnlessAsync;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.Task>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;UnlessAsync;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.Task>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;UnlessAsync;(System.Func>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;UnlessAsync;(System.Func>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;When;(System.Func,System.Boolean>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;When;(System.Func,System.Boolean>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;When;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;When;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;WhenAsync;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.Task>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;WhenAsync;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.Task>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;WhenAsync;(System.Func>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;WhenAsync;(System.Func>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AssemblyScanner;false;ForEach;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AssemblyScanner;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| ServiceStack.FluentValidation;AssemblyScanner;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;ChildRules<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Custom<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;CustomAsync<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Equal<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>,System.Collections.IEqualityComparer);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;ForEach<,>;(ServiceStack.FluentValidation.IRuleBuilder>,System.Action,TElement>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;GreaterThan<,>;(ServiceStack.FluentValidation.IRuleBuilder>,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;GreaterThan<,>;(ServiceStack.FluentValidation.IRuleBuilder>,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;GreaterThan<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;GreaterThan<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;GreaterThanOrEqualTo<,>;(ServiceStack.FluentValidation.IRuleBuilder>,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;GreaterThanOrEqualTo<,>;(ServiceStack.FluentValidation.IRuleBuilder>,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;GreaterThanOrEqualTo<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;GreaterThanOrEqualTo<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Length<>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Length<>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Length<>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;LessThan<,>;(ServiceStack.FluentValidation.IRuleBuilder>,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;LessThan<,>;(ServiceStack.FluentValidation.IRuleBuilder>,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;LessThan<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;LessThan<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;LessThanOrEqualTo<,>;(ServiceStack.FluentValidation.IRuleBuilder>,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;LessThanOrEqualTo<,>;(ServiceStack.FluentValidation.IRuleBuilder>,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;LessThanOrEqualTo<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;LessThanOrEqualTo<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Matches<>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Matches<>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func,System.Text.RegularExpressions.RegexOptions);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Matches<>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Must<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Must<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Must<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;MustAsync<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;MustAsync<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;MustAsync<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;NotEqual<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>,System.Collections.IEqualityComparer);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;SetInheritanceValidator<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Validate<>;(ServiceStack.FluentValidation.IValidator,T,System.Action>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;ValidateAsync<>;(ServiceStack.FluentValidation.IValidator,T,System.Action>,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;DependentRules<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;OnAnyFailure<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;OnAnyFailure<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;OnFailure<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;OnFailure<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;OnFailure<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;OverrideIndexer<,>;(ServiceStack.FluentValidation.IRuleBuilderInitialCollection,System.Func,TCollectionElement,System.Int32,System.String>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;OverridePropertyName<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;Unless<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func,System.Boolean>,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;Unless<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;UnlessAsync<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func,System.Threading.CancellationToken,System.Threading.Tasks.Task>,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;UnlessAsync<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func>,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;When<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func,System.Boolean>,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;When<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;WhenAsync<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func,System.Threading.CancellationToken,System.Threading.Tasks.Task>,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;WhenAsync<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func>,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;Where<,>;(ServiceStack.FluentValidation.IRuleBuilderInitialCollection,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;WithMessage<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;WithMessage<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;WithName<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;WithSeverity<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;WithSeverity<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;WithState<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;WithState<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IConditionBuilder;true;Otherwise;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IRuleBuilder<,>;true;SetValidator<>;(System.Func,System.String[]);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IRuleBuilder<,>;true;SetValidator<>;(System.Func,System.String[]);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IRuleBuilderInitial<,>;true;Transform<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IRuleBuilderInitialCollection<,>;true;Transform<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IServiceStackValidator;true;RemovePropertyRules;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IValidationRule;true;ApplyAsyncCondition;(System.Func>,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IValidationRule;true;ApplyCondition;(System.Func,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IValidationRule;true;ApplySharedAsyncCondition;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IValidationRule;true;ApplySharedCondition;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;InlineValidator<>;false;Add<>;(System.Func,ServiceStack.FluentValidation.IRuleBuilderOptions>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;PropertyValidatorOptions;false;ApplyAsyncCondition;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;PropertyValidatorOptions;false;ApplyCondition;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;PropertyValidatorOptions;false;SetErrorMessage;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;PropertyValidatorOptions;false;set_AsyncCondition;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;PropertyValidatorOptions;false;set_Condition;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;PropertyValidatorOptions;false;set_CustomStateProvider;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;PropertyValidatorOptions;false;set_SeverityProvider;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidationContext<>;false;CreateWithOptions;(T,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorConfiguration;false;set_DisplayNameResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorConfiguration;false;set_ErrorCodeResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorConfiguration;false;set_MessageFormatterFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorConfiguration;false;set_PropertyNameResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorDescriptor<>;false;GetName;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorOptions;false;set_DisplayNameResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorOptions;false;set_ErrorCodeResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorOptions;false;set_MessageFormatterFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorOptions;false;set_PropertyNameResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorSelectorOptions;false;set_DefaultValidatorSelectorFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorSelectorOptions;false;set_MemberNameValidatorSelectorFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorSelectorOptions;false;set_RulesetValidatorSelectorFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Formats;HtmlFormat;false;set_ResolveTemplate;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host.Handlers;CustomActionHandler;false;CustomActionHandler;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host.Handlers;CustomActionHandler;false;set_Action;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host.Handlers;CustomActionHandlerAsync;false;CustomActionHandlerAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host.Handlers;CustomActionHandlerAsync;false;set_Action;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host.Handlers;CustomResponseHandler;false;CustomResponseHandler;(System.Func,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host.Handlers;CustomResponseHandler;false;set_Action;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host.Handlers;CustomResponseHandlerAsync;false;CustomResponseHandlerAsync;(System.Func>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host.Handlers;CustomResponseHandlerAsync;false;set_Action;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host.Handlers;HttpAsyncTaskHandler;true;Middleware;(Microsoft.AspNetCore.Http.HttpContext,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host.Handlers;StaticFileHandler;false;set_ResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ActionContext;false;set_ServiceAction;(ServiceStack.Host.ActionInvokerFn);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ActionInvokerFn;false;BeginInvoke;(System.Object,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ContentTypes;false;Register;(System.String,ServiceStack.Web.StreamSerializerDelegate,ServiceStack.Web.StreamDeserializerDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ContentTypes;false;Register;(System.String,ServiceStack.Web.StreamSerializerDelegate,ServiceStack.Web.StreamDeserializerDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ContentTypes;false;RegisterAsync;(System.String,ServiceStack.Web.StreamSerializerDelegateAsync,ServiceStack.Web.StreamDeserializerDelegateAsync);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ContentTypes;false;RegisterAsync;(System.String,ServiceStack.Web.StreamSerializerDelegateAsync,ServiceStack.Web.StreamDeserializerDelegateAsync);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ContentTypes;false;SetContentTypeDeserializer;(System.String,ServiceStack.Web.StreamDeserializerDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ContentTypes;false;SetContentTypeSerializer;(System.String,ServiceStack.Web.StreamSerializerDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ContentTypes;false;set_UnknownContentTypeDeserializer;(ServiceStack.Web.StreamDeserializerDelegateAsync);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ContentTypes;false;set_UnknownContentTypeSerializer;(ServiceStack.Web.StreamSerializerDelegateAsync);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;FallbackRestPathDelegate;false;BeginInvoke;(ServiceStack.Web.IHttpRequest,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;HandleGatewayExceptionAsyncDelegate;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,System.Exception,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;HandleGatewayExceptionDelegate;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,System.Exception,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;HandleServiceExceptionAsyncDelegate;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,System.Exception,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;HandleServiceExceptionDelegate;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,System.Exception,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;HandleUncaughtExceptionAsyncDelegate;false;BeginInvoke;(ServiceStack.Web.IRequest,ServiceStack.Web.IResponse,System.String,System.Exception,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;HandleUncaughtExceptionDelegate;false;BeginInvoke;(ServiceStack.Web.IRequest,ServiceStack.Web.IResponse,System.String,System.Exception,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;HttpHandlerResolverDelegate;false;BeginInvoke;(System.String,System.String,System.String,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;IHttpAsyncHandler;true;Middleware;(Microsoft.AspNetCore.Http.HttpContext,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;InMemoryRollingRequestLogger;false;set_CurrentDateFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;InMemoryRollingRequestLogger;false;set_IgnoreFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;InMemoryRollingRequestLogger;false;set_RequestBodyTrackingFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;InMemoryRollingRequestLogger;false;set_RequestLogFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;InMemoryRollingRequestLogger;false;set_ResponseTrackingFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;InMemoryRollingRequestLogger;false;set_SkipLogging;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;InstanceExecFn;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,System.Object,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;MetadataTypeExtensions;false;ToMetadataServiceRoutes;(System.Collections.Generic.Dictionary,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;RestPath;false;set_CalculateMatchScore;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;RouteNamingConventionDelegate;false;BeginInvoke;(ServiceStack.Web.IServiceRoutes,System.Type,System.String,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ServiceController;false;ServiceController;(ServiceStack.ServiceStackHost,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ServiceController;false;set_ResolveServicesFn;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ServiceExecFn;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;StreamSerializerResolverDelegate;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,ServiceStack.Web.IResponse,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;TypedFilter<>;false;TypedFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;TypedFilterAsync<>;false;TypedFilterAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;VoidActionInvokerFn;false;BeginInvoke;(System.Object,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Html;Input;false;AddCss;(ServiceStack.InputInfo,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Html;Input;false;For<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Html;Input;false;For<>;(System.Linq.Expressions.Expression>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Html;Input;false;For<>;(System.Linq.Expressions.Expression>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Html;InspectUtils;false;GetFieldNames<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Html;InspectUtils;false;PropertyFromExpression<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Html;MediaRuleCreator;false;Show<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;ApplyToLineContaining;false;ApplyToLineContaining;(System.String,System.Func,System.ReadOnlyMemory>,ServiceStack.Run);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;FileHandler;false;set_VirtualFilesResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;FilesHandler;false;set_VirtualFilesResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;FilesTransformer;false;Clone;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;FilesTransformer;false;CopyAll;(ServiceStack.IO.IVirtualFiles,ServiceStack.IO.IVirtualFiles,System.Boolean,System.Func,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;FilesTransformer;false;CopyAll;(ServiceStack.IO.IVirtualFiles,ServiceStack.IO.IVirtualFiles,System.Boolean,System.Func,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;FilesTransformer;false;Defaults;(System.Nullable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;FilesTransformerUtils;false;Defaults;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;HtmlHandlerFragment;false;HtmlHandlerFragment;(System.String,System.String,System.Func>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;HtmlTokenFragment;false;HtmlTokenFragment;(System.String,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;MinifyBlock;false;set_Convert;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.IO;FileSystemVirtualFiles;false;WriteFiles;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.IO;GistVirtualDirectory;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| ServiceStack.IO;GistVirtualFiles;false;WriteFiles;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.IO;IVirtualFiles;true;WriteFiles;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.IO;IVirtualFilesAsync;true;WriteFilesAsync;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.IO;InMemoryVirtualDirectory;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| ServiceStack.IO;MemoryVirtualFiles;false;WriteFiles;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.IO;MultiVirtualDirectory;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| ServiceStack.IO;MultiVirtualDirectory;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| ServiceStack.IO;MultiVirtualFiles;false;WriteFiles;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.IO;VirtualFilesExtensions;false;CopyFrom;(ServiceStack.IO.IVirtualPathProvider,System.Collections.Generic.IEnumerable,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.IO;VirtualFilesExtensions;false;WriteFiles;(ServiceStack.IO.IVirtualPathProvider,System.Collections.Generic.IEnumerable,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Logging;GenericLogFactory;false;GenericLogFactory;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;BackgroundMqService;false;CreateMessageHandlerFactory<>;(System.Func,System.Object>,System.Action,System.Exception>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;BackgroundMqService;false;CreateMessageHandlerFactory<>;(System.Func,System.Object>,System.Action,System.Exception>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;BackgroundMqService;false;RegisterHandler<>;(System.Func,System.Object>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;BackgroundMqService;false;RegisterHandler<>;(System.Func,System.Object>,System.Action,System.Exception>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;BackgroundMqService;false;RegisterHandler<>;(System.Func,System.Object>,System.Action,System.Exception>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;BackgroundMqService;false;RegisterHandler<>;(System.Func,System.Object>,System.Action,System.Exception>,System.Int32);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;BackgroundMqService;false;RegisterHandler<>;(System.Func,System.Object>,System.Action,System.Exception>,System.Int32);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;BackgroundMqService;false;RegisterHandler<>;(System.Func,System.Object>,System.Int32);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;BackgroundMqService;false;set_RequestFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;BackgroundMqService;false;set_ResponseFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;IMessageHandler;true;ProcessQueue;(ServiceStack.Messaging.IMessageQueueClient,System.String,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;IMessageService;true;RegisterHandler<>;(System.Func,System.Object>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;IMessageService;true;RegisterHandler<>;(System.Func,System.Object>,System.Action,System.Exception>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;IMessageService;true;RegisterHandler<>;(System.Func,System.Object>,System.Action,System.Exception>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;IMessageService;true;RegisterHandler<>;(System.Func,System.Object>,System.Action,System.Exception>,System.Int32);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;IMessageService;true;RegisterHandler<>;(System.Func,System.Object>,System.Action,System.Exception>,System.Int32);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;IMessageService;true;RegisterHandler<>;(System.Func,System.Object>,System.Int32);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageHandler<>;false;MessageHandler;(ServiceStack.Messaging.IMessageService,System.Func,System.Object>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageHandler<>;false;MessageHandler;(ServiceStack.Messaging.IMessageService,System.Func,System.Object>,System.Action,System.Exception>,System.Int32);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageHandler<>;false;MessageHandler;(ServiceStack.Messaging.IMessageService,System.Func,System.Object>,System.Action,System.Exception>,System.Int32);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageHandler<>;false;ProcessQueue;(ServiceStack.Messaging.IMessageQueueClient,System.String,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageHandler<>;false;set_ReplyClientFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageHandlerFactory<>;false;MessageHandlerFactory;(ServiceStack.Messaging.IMessageService,System.Func,System.Object>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageHandlerFactory<>;false;MessageHandlerFactory;(ServiceStack.Messaging.IMessageService,System.Func,System.Object>,System.Action,System.Exception>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageHandlerFactory<>;false;MessageHandlerFactory;(ServiceStack.Messaging.IMessageService,System.Func,System.Object>,System.Action,System.Exception>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageHandlerFactory<>;false;set_RequestFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageHandlerFactory<>;false;set_ResponseFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageQueueClientFactory;false;add_MessageReceived;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageQueueClientFactory;false;remove_MessageReceived;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;RedisMessageProducer;false;RedisMessageProducer;(ServiceStack.Redis.IRedisClientsManager,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;RedisMessageQueueClient;false;RedisMessageQueueClient;(ServiceStack.Redis.IRedisClientsManager,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;RedisMessageQueueClientFactory;false;RedisMessageQueueClientFactory;(ServiceStack.Redis.IRedisClientsManager,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;TransientMessageServiceBase;false;CreateMessageHandlerFactory<>;(System.Func,System.Object>,System.Action,System.Exception>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;TransientMessageServiceBase;false;CreateMessageHandlerFactory<>;(System.Func,System.Object>,System.Action,System.Exception>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;TransientMessageServiceBase;false;RegisterHandler<>;(System.Func,System.Object>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;TransientMessageServiceBase;false;RegisterHandler<>;(System.Func,System.Object>,System.Action,System.Exception>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;TransientMessageServiceBase;false;RegisterHandler<>;(System.Func,System.Object>,System.Action,System.Exception>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;TransientMessageServiceBase;false;RegisterHandler<>;(System.Func,System.Object>,System.Action,System.Exception>,System.Int32);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;TransientMessageServiceBase;false;RegisterHandler<>;(System.Func,System.Object>,System.Action,System.Exception>,System.Int32);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;TransientMessageServiceBase;false;RegisterHandler<>;(System.Func,System.Object>,System.Int32);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Metadata;IndexOperationsControl;false;set_GetOperation;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.MiniProfiler.Data;ProfiledDbDataReader;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| ServiceStack.NativeTypes.CSharp;CSharpGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.CSharp;CSharpGenerator;false;set_InnerTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.CSharp;CSharpGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.CSharp;CSharpGenerator;false;set_PostPropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.CSharp;CSharpGenerator;false;set_PostTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.CSharp;CSharpGenerator;false;set_PrePropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.CSharp;CSharpGenerator;false;set_PreTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.CSharp;CSharpGenerator;false;set_PropertyTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.CSharp;CSharpGenerator;false;set_TypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Dart;DartGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Dart;DartGenerator;false;set_InnerTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Dart;DartGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Dart;DartGenerator;false;set_PostPropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Dart;DartGenerator;false;set_PostTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Dart;DartGenerator;false;set_PrePropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Dart;DartGenerator;false;set_PreTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Dart;DartGenerator;false;set_PropertyTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Dart;DartGenerator;false;set_TypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.FSharp;FSharpGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.FSharp;FSharpGenerator;false;set_InnerTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.FSharp;FSharpGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.FSharp;FSharpGenerator;false;set_PostPropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.FSharp;FSharpGenerator;false;set_PostTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.FSharp;FSharpGenerator;false;set_PrePropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.FSharp;FSharpGenerator;false;set_PreTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.FSharp;FSharpGenerator;false;set_PropertyTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.FSharp;FSharpGenerator;false;set_TypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Java;JavaGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Java;JavaGenerator;false;set_InnerTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Java;JavaGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Java;JavaGenerator;false;set_PostPropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Java;JavaGenerator;false;set_PostTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Java;JavaGenerator;false;set_PrePropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Java;JavaGenerator;false;set_PreTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Java;JavaGenerator;false;set_PropertyTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Java;JavaGenerator;false;set_TypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Kotlin;KotlinGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Kotlin;KotlinGenerator;false;set_InnerTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Kotlin;KotlinGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Kotlin;KotlinGenerator;false;set_PostPropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Kotlin;KotlinGenerator;false;set_PostTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Kotlin;KotlinGenerator;false;set_PrePropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Kotlin;KotlinGenerator;false;set_PreTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Kotlin;KotlinGenerator;false;set_PropertyTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Kotlin;KotlinGenerator;false;set_TypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_CookedDeclarationTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_CookedTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_DeclarationTypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_FilterTypes;(System.Func,System.Collections.Generic.List>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_InnerTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_IsPropertyOptional;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_PostPropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_PostTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_PrePropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_PreTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_PropertyTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_ReturnMarkerFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_TypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_EnumNameStrategy;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_InnerTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_PostPropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_PostTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_PrePropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_PreTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_PropertyTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_TypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;CommonJsGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;CommonJsGenerator;false;set_FilterTypes;(System.Func,System.Collections.Generic.List>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;CommonJsGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;CommonJsGenerator;false;set_ReturnTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_CookedDeclarationTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_CookedTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_DeclarationTypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_FilterTypes;(System.Func,System.Collections.Generic.List>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_InnerTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_IsPropertyOptional;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_PostPropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_PostTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_PrePropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_PreTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_PropertyTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_ReturnMarkerFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_TypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.VbNet;VbNetGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.VbNet;VbNetGenerator;false;set_InnerTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.VbNet;VbNetGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.VbNet;VbNetGenerator;false;set_PostPropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.VbNet;VbNetGenerator;false;set_PostTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.VbNet;VbNetGenerator;false;set_PrePropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.VbNet;VbNetGenerator;false;set_PreTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.VbNet;VbNetGenerator;false;set_PropertyTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.VbNet;VbNetGenerator;false;set_TypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes;AddCodeDelegate;false;BeginInvoke;(System.Collections.Generic.List,ServiceStack.MetadataTypesConfig,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes;CreateTypeOptions;false;set_ImplementsFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes;INativeTypesMetadata;true;GetMetadataTypes;(ServiceStack.Web.IRequest,ServiceStack.MetadataTypesConfig,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes;LangGeneratorExtensions;false;GenerateSourceCode;(ServiceStack.MetadataTypes,ServiceStack.MetadataTypesConfig,System.String,ServiceStack.Web.IRequest,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes;LangGeneratorExtensions;false;GenerateSourceCode;(System.Collections.Generic.List,System.String,ServiceStack.Web.IRequest,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes;MetadataTypesGenerator;false;GetMetadataTypes;(ServiceStack.Web.IRequest,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes;NativeTypesMetadata;false;GetMetadataTypes;(ServiceStack.Web.IRequest,ServiceStack.MetadataTypesConfig,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes;TypeFilterDelegate;false;BeginInvoke;(System.String,System.String[],System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NetCore;NetCoreHeadersCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| ServiceStack.NetCore;NetCoreHeadersCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| ServiceStack.NetCore;NetCoreQueryStringCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| ServiceStack.NetCore;NetCoreQueryStringCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| ServiceStack.OrmLite.Dapper;CustomPropertyTypeMap;false;CustomPropertyTypeMap;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;DynamicParameters;false;Output<>;(T,System.Linq.Expressions.Expression>,System.Nullable,System.Nullable);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper+GridReader;false;Read<,,,,,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper+GridReader;false;Read<,,,,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper+GridReader;false;Read<,,,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper+GridReader;false;Read<,,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper+GridReader;false;Read<,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper+GridReader;false;Read<,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper+GridReader;false;Read<>;(System.Type[],System.Func,System.String,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper;false;QueryAsync<,,,,,,,>;(System.Data.IDbConnection,ServiceStack.OrmLite.Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper;false;QueryAsync<,,,,,,>;(System.Data.IDbConnection,ServiceStack.OrmLite.Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper;false;QueryAsync<,,,,,>;(System.Data.IDbConnection,ServiceStack.OrmLite.Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper;false;QueryAsync<,,,,>;(System.Data.IDbConnection,ServiceStack.OrmLite.Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper;false;QueryAsync<,,,>;(System.Data.IDbConnection,ServiceStack.OrmLite.Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper;false;QueryAsync<,,>;(System.Data.IDbConnection,ServiceStack.OrmLite.Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper;false;add_QueryCachePurged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper;false;remove_QueryCachePurged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadApiAsyncLegacy;false;ExistsAsync<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadApiLegacy;false;Exists<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiAsyncLegacy;false;CountAsync<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiAsyncLegacy;false;LoadSelectAsync<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.String[],System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiAsyncLegacy;false;SelectAsync<,>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiAsyncLegacy;false;SelectAsync<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiAsyncLegacy;false;SingleAsync<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiLegacy;false;Count<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiLegacy;false;LoadSelect<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Collections.Generic.IEnumerable);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiLegacy;false;LoadSelect<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiLegacy;false;LoadSelect<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiLegacy;false;Select<,>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiLegacy;false;Select<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiLegacy;false;Single<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteWriteExpressionsApiAsyncLegacy;false;DeleteAsync<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteWriteExpressionsApiAsyncLegacy;false;InsertOnlyAsync<>;(System.Data.IDbConnection,T,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteWriteExpressionsApiAsyncLegacy;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,T,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteWriteExpressionsApiLegacy;false;Delete<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteWriteExpressionsApiLegacy;false;InsertOnly<>;(System.Data.IDbConnection,T,System.Func,ServiceStack.OrmLite.SqlExpression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteWriteExpressionsApiLegacy;false;UpdateOnly<>;(System.Data.IDbConnection,T,System.Func,ServiceStack.OrmLite.SqlExpression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.SqlServer;SqlServerOrmLiteDialectProvider;false;PrepareParameterizedInsertStatement<>;(System.Data.IDbCommand,System.Collections.Generic.ICollection,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.SqlServer;SqlServerOrmLiteDialectProvider;false;ReaderEach<>;(System.Data.IDataReader,System.Action,Return,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.SqlServer;SqlServerOrmLiteDialectProvider;false;ReaderEach<>;(System.Data.IDataReader,System.Func,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.SqlServer;SqlServerOrmLiteDialectProvider;false;ReaderRead<>;(System.Data.IDataReader,System.Func,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;DbDataParameterExtensions;false;AddParam;(ServiceStack.OrmLite.IOrmLiteDialectProvider,System.Data.IDbCommand,System.Object,ServiceStack.OrmLite.FieldDefinition,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;FieldDefinition;false;Clone;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;FieldDefinition;false;set_GetValueFn;(ServiceStack.GetMemberDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;FieldDefinition;false;set_SetValueFn;(ServiceStack.SetMemberDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;GetValueDelegate;false;BeginInvoke;(System.Int32,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteDialectProvider;true;PrepareParameterizedInsertStatement<>;(System.Data.IDbCommand,System.Collections.Generic.ICollection,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteDialectProvider;true;ReaderEach<>;(System.Data.IDataReader,System.Action,Return,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteDialectProvider;true;ReaderEach<>;(System.Data.IDataReader,System.Func,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteDialectProvider;true;ReaderRead<>;(System.Data.IDataReader,System.Func,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteDialectProvider;true;ToAddForeignKeyStatement<,>;(System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.OnFkOption,ServiceStack.OrmLite.OnFkOption,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteDialectProvider;true;ToAddForeignKeyStatement<,>;(System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.OnFkOption,ServiceStack.OrmLite.OnFkOption,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteDialectProvider;true;ToCreateIndexStatement<>;(System.Linq.Expressions.Expression>,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteDialectProvider;true;set_OnOpenConnection;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteDialectProvider;true;set_ParamNameFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteExecFilter;true;Exec;(System.Data.IDbConnection,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteExecFilter;true;Exec;(System.Data.IDbConnection,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteExecFilter;true;Exec;(System.Data.IDbConnection,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteExecFilter;true;Exec;(System.Data.IDbConnection,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteExecFilter;true;Exec<>;(System.Data.IDbConnection,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteExecFilter;true;Exec<>;(System.Data.IDbConnection,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteExecFilter;true;ExecLazy<>;(System.Data.IDbConnection,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IPropertyInvoker;true;set_ConvertValueFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedApi;true;Insert;(System.Object,System.Action,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedApi;true;InsertAll;(System.Collections.IEnumerable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedApi;true;UpdateAll;(System.Collections.IEnumerable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;And<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;And<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;CrossJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;Ensure<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;Ensure<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;FullJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;Join<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;LeftJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;Or<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;Or<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;OrderBy<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;OrderByDescending<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;RightJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;Select<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;Select<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;SelectDistinct<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;SelectDistinct<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;ThenBy<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;ThenByDescending<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;Where<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;Where<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;JoinFormatDelegate;false;BeginInvoke;(ServiceStack.OrmLite.IOrmLiteDialectProvider,ServiceStack.OrmLite.ModelDefinition,System.String,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;ModelDefinition;false;AssertFieldDefinition;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;ModelDefinition;false;GetFieldDefinition;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;ModelDefinition;false;GetFieldDefinition;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;ModelDefinition;false;GetFieldDefinition<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;ModelDefinition;false;GetFieldDefinitionMap;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;ModelDefinition;false;GetOrderedFieldDefinitions;(System.Collections.Generic.ICollection,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_AfterExecFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_BeforeExecFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_ExceptionFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_InsertFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_LoadReferenceSelectFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_OnDbNullFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_OnModelDefinitionInit;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_ParamNameFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_PopulatedObjectFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_SqlExpressionInitFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_SqlExpressionSelectFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_StringFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_UpdateFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConnectionFactory;false;set_ConnectionFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConnectionFactory;false;set_OnDispose;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteContext;false;GetOrCreate<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteDialectProviderBase<>;false;set_CreateTableFieldsStrategy;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteDialectProviderBase<>;false;set_OnOpenConnection;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteDialectProviderBase<>;false;set_ParamNameFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteDialectProviderBase<>;true;PrepareParameterizedInsertStatement<>;(System.Data.IDbCommand,System.Collections.Generic.ICollection,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteDialectProviderBase<>;true;ReaderEach<>;(System.Data.IDataReader,System.Action,Return,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteDialectProviderBase<>;true;ReaderEach<>;(System.Data.IDataReader,System.Func,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteDialectProviderBase<>;true;ReaderRead<>;(System.Data.IDataReader,System.Func,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteDialectProviderBase<>;true;ToAddForeignKeyStatement<,>;(System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.OnFkOption,ServiceStack.OrmLite.OnFkOption,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteDialectProviderBase<>;true;ToAddForeignKeyStatement<,>;(System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.OnFkOption,ServiceStack.OrmLite.OnFkOption,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteDialectProviderBase<>;true;ToCreateIndexStatement<>;(System.Linq.Expressions.Expression>,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteExecFilter;false;Exec;(System.Data.IDbConnection,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteExecFilter;false;Exec;(System.Data.IDbConnection,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteExecFilter;false;Exec;(System.Data.IDbConnection,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteExecFilter;false;Exec;(System.Data.IDbConnection,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteExecFilter;false;Exec<>;(System.Data.IDbConnection,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteExecFilter;false;Exec<>;(System.Data.IDbConnection,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteExecFilter;false;ExecLazy<>;(System.Data.IDbConnection,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadApi;false;ExecuteNonQuery;(System.Data.IDbConnection,System.String,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadApi;false;Exists<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadApi;false;LoadSingleById<>;(System.Data.IDbConnection,System.Object,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadApi;false;SqlList<>;(System.Data.IDbConnection,System.String,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ExistsAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;LoadSingleByIdAsync<>;(System.Data.IDbConnection,System.Object,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlListAsync<>;(System.Data.IDbConnection,System.String,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadCommandExtensions;false;AddParam;(System.Data.IDbCommand,System.String,System.Object,System.Data.ParameterDirection,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Action);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Count<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Exec;(System.Data.IDbConnection,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Exec;(System.Data.IDbConnection,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Exec;(System.Data.IDbConnection,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Exec;(System.Data.IDbConnection,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Exec<>;(System.Data.IDbConnection,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Exec<>;(System.Data.IDbConnection,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;ExecLazy<>;(System.Data.IDbConnection,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;From<,>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;From<>;(System.Data.IDbConnection,ServiceStack.OrmLite.TableOptions,System.Action>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;From<>;(System.Data.IDbConnection,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;LoadSelect<,>;(System.Data.IDbConnection,ServiceStack.OrmLite.SqlExpression,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;LoadSelect<>;(System.Data.IDbConnection,ServiceStack.OrmLite.SqlExpression,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;LoadSelect<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;LoadSelect<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;LoadSelect<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.String[]);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Scalar<,>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Scalar<,>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Scalar<,>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Select<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Single<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;CountAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;LoadSelectAsync<,>;(System.Data.IDbConnection,ServiceStack.OrmLite.SqlExpression,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;LoadSelectAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;LoadSelectAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;LoadSelectAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.String[],System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;ScalarAsync<,>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;ScalarAsync<,>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;ScalarAsync<,>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;SelectAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;SingleAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_ColumnDistinctResultsFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_ColumnResultsFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_DictionaryResultsFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_ExecuteSqlFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_LastInsertIdFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_LongScalarResultFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_LookupResultsFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_RefResultsFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_RefSingleResultFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_ResultsFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_ScalarResultFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_SingleResultFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_SqlCommandFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_SqlFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilterExtensions;false;ExecNonQuery;(System.Data.IDbCommand,System.String,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteSchemaApi;false;ColumnExists<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteSchemaApi;false;ColumnExistsAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteSchemaModifyApi;false;AddColumn<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteSchemaModifyApi;false;AddForeignKey<,>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.OnFkOption,ServiceStack.OrmLite.OnFkOption,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteSchemaModifyApi;false;AddForeignKey<,>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.OnFkOption,ServiceStack.OrmLite.OnFkOption,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteSchemaModifyApi;false;AlterColumn<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteSchemaModifyApi;false;ChangeColumnName<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteSchemaModifyApi;false;CreateIndex<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.String,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteSchemaModifyApi;false;DropColumn<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteUtils;false;EvalFactoryFn<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteUtils;false;set_SqlVerifyFragmentFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;Delete<>;(System.Data.IDbConnection,System.Object,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;Delete<>;(System.Data.IDbConnection,T,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;DeleteById<>;(System.Data.IDbConnection,System.Object,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;DeleteById<>;(System.Data.IDbConnection,System.Object,System.UInt64,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;Insert<>;(System.Data.IDbConnection,System.Action,System.Collections.Generic.Dictionary,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;Insert<>;(System.Data.IDbConnection,System.Action,T[]);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;Insert<>;(System.Data.IDbConnection,T,System.Action,System.Boolean);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;InsertAll<>;(System.Data.IDbConnection,System.Collections.Generic.IEnumerable,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;InsertIntoSelect<>;(System.Data.IDbConnection,ServiceStack.OrmLite.ISqlExpression,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;Update<>;(System.Data.IDbConnection,System.Action,T[]);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;Update<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;Update<>;(System.Data.IDbConnection,T,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;UpdateAll<>;(System.Data.IDbConnection,System.Collections.Generic.IEnumerable,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;DeleteAsync<>;(System.Data.IDbConnection,System.Action,System.Threading.CancellationToken,T[]);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;DeleteAsync<>;(System.Data.IDbConnection,System.Action,T[]);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;DeleteAsync<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;DeleteAsync<>;(System.Data.IDbConnection,System.Object,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;DeleteAsync<>;(System.Data.IDbConnection,T,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;DeleteByIdAsync<>;(System.Data.IDbConnection,System.Object,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;DeleteByIdAsync<>;(System.Data.IDbConnection,System.Object,System.UInt64,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;DeleteByIdsAsync<>;(System.Data.IDbConnection,System.Collections.IEnumerable,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;InsertAllAsync<>;(System.Data.IDbConnection,System.Collections.Generic.IEnumerable,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;InsertAsync<>;(System.Data.IDbConnection,System.Action,System.Collections.Generic.Dictionary,System.Boolean,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;InsertAsync<>;(System.Data.IDbConnection,System.Action,System.Threading.CancellationToken,T[]);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;InsertAsync<>;(System.Data.IDbConnection,T,System.Action,System.Boolean,System.Boolean,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;InsertIntoSelectAsync<>;(System.Data.IDbConnection,ServiceStack.OrmLite.ISqlExpression,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;UpdateAllAsync<>;(System.Data.IDbConnection,System.Collections.Generic.IEnumerable,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;UpdateAsync<>;(System.Data.IDbConnection,System.Action,System.Threading.CancellationToken,T[]);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;UpdateAsync<>;(System.Data.IDbConnection,System.Action,T[]);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;UpdateAsync<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;UpdateAsync<>;(System.Data.IDbConnection,T,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;Delete<>;(System.Data.IDbConnection,ServiceStack.OrmLite.SqlExpression,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;Delete<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;Delete<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;InsertOnly<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;InsertOnly<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Boolean);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;Update<>;(System.Data.IDbConnection,System.Object,System.Linq.Expressions.Expression>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;Update<>;(System.Data.IDbConnection,System.Object,System.Linq.Expressions.Expression>,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;Update<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;Update<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateAdd<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.SqlExpression,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateAdd<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.SqlExpression,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateAdd<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateAdd<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateAdd<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateNonDefaults<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.String,System.Object[],System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.SqlExpression,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.SqlExpression,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.String,System.Collections.Generic.IEnumerable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.String,System.Collections.Generic.IEnumerable,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnlyFields<>;(System.Data.IDbConnection,T,ServiceStack.OrmLite.SqlExpression,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnlyFields<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnlyFields<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnlyFields<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnlyFields<>;(System.Data.IDbConnection,T,System.String[],System.Linq.Expressions.Expression>,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnlyFields<>;(System.Data.IDbConnection,T,System.String[],System.Linq.Expressions.Expression>,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;DeleteAsync<>;(System.Data.IDbConnection,ServiceStack.OrmLite.SqlExpression,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;DeleteAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;DeleteAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;DeleteWhereAsync<>;(System.Data.IDbConnection,System.String,System.Object[],System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;InsertOnlyAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;InsertOnlyAsync<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateAddAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.SqlExpression,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateAddAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.SqlExpression,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateAddAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateAddAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateAddAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateAsync<>;(System.Data.IDbConnection,System.Object,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateAsync<>;(System.Data.IDbConnection,System.Object,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateAsync<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateAsync<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateNonDefaultsAsync<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.String,System.Object[],System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.SqlExpression,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.SqlExpression,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.String,System.Collections.Generic.IEnumerable,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.String,System.Collections.Generic.IEnumerable,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyFieldsAsync<>;(System.Data.IDbConnection,T,ServiceStack.OrmLite.SqlExpression,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyFieldsAsync<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyFieldsAsync<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyFieldsAsync<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyFieldsAsync<>;(System.Data.IDbConnection,T,System.String[],System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyFieldsAsync<>;(System.Data.IDbConnection,T,System.String[],System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;PredicateBuilder;false;And<>;(System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;PredicateBuilder;false;And<>;(System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;PredicateBuilder;false;Create<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;PredicateBuilder;false;Not<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;PredicateBuilder;false;Or<>;(System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;PredicateBuilder;false;Or<>;(System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;CrossJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;CrossJoin<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;FullJoin<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;FullJoin<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;FullJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;FullJoin<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;InternalJoin<,>;(System.String,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;InternalJoin<,>;(System.String,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;InternalJoin<,>;(System.String,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.TableOptions);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<,>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<,>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<,>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.TableOptions);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.TableOptions);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<,>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<,>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<,>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.TableOptions);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.TableOptions);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<,>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<,>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<,>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.TableOptions);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.TableOptions);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;set_SelectFilter;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;set_SqlFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And;(System.Linq.Expressions.Expression>,System.Object[]);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Ensure;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Ensure<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Ensure<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Ensure<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Ensure<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Ensure<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;GroupBy;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;GroupBy<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;GroupBy<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;GroupBy<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;GroupBy<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Having;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Having<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Having<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Having<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Insert<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or;(System.Linq.Expressions.Expression>,System.Object[]);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderBy;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderBy<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderBy<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderBy<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderBy<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderBy<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderByDescending;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderByDescending<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderByDescending<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderByDescending<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderByDescending<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderByDescending<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenBy;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenBy<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenBy<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenBy<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenBy<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenBy<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenByDescending;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenByDescending<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenByDescending<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenByDescending<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenByDescending<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenByDescending<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Update;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where;(System.Linq.Expressions.Expression>,System.Object[]);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;WithSqlFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpressionExtensions;false;Column<>;(ServiceStack.OrmLite.IOrmLiteDialectProvider,System.Linq.Expressions.Expression>,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpressionExtensions;false;Column<>;(ServiceStack.OrmLite.ISqlExpression,System.Linq.Expressions.Expression>,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedApi<>;false;Exec;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedApi<>;false;Exec<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedApi<>;false;Exec<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedApi<>;false;Insert;(System.Object,System.Action,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedApi<>;false;InsertAll;(System.Collections.IEnumerable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedApi<>;false;Update;(System.Object,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedApi<>;false;UpdateAll;(System.Collections.IEnumerable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;And<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;And<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;CrossJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;Ensure<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;Ensure<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;FullJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;Join<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;LeftJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;Or<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;Or<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;OrderBy<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;OrderByDescending<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;RightJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;Select<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;Select<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;SelectDistinct<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;SelectDistinct<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;ThenBy<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;ThenByDescending<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;Where<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<>;false;Where<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Action>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Action>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Action>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Boolean>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Boolean>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Boolean>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Boolean>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Boolean>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Boolean>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Byte[]>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Byte[]>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Byte[]>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Byte[]>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Byte[]>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Byte[]>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.HashSet>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.HashSet>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.HashSet>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.HashSet>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.HashSet>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.HashSet>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Double>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Double>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Double>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Double>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Double>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Double>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int32>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int32>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int32>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int32>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int32>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int32>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int64>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int64>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int64>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int64>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int64>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int64>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.String>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.String>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.String>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.String>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.String>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.String>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,T>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,T>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,T>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,T>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,T>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,T>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperation;true;CompleteBytesQueuedCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperation;true;CompleteDoubleQueuedCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperation;true;CompleteIntQueuedCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperation;true;CompleteLongQueuedCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperation;true;CompleteMultiBytesQueuedCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperation;true;CompleteMultiStringQueuedCommand;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperation;true;CompleteRedisDataQueuedCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperation;true;CompleteStringQueuedCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperation;true;CompleteVoidQueuedCommand;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperationAsync;true;CompleteBytesQueuedCommandAsync;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperationAsync;true;CompleteDoubleQueuedCommandAsync;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperationAsync;true;CompleteIntQueuedCommandAsync;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperationAsync;true;CompleteLongQueuedCommandAsync;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperationAsync;true;CompleteMultiBytesQueuedCommandAsync;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperationAsync;true;CompleteMultiStringQueuedCommandAsync;(System.Func>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperationAsync;true;CompleteRedisDataQueuedCommandAsync;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperationAsync;true;CompleteStringQueuedCommandAsync;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperationAsync;true;CompleteVoidQueuedCommandAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Action,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Action,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Action,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisClient;true;ExecCachedLua<>;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisClientAsync;true;ExecCachedLuaAsync<>;(System.String,System.Func>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisPubSubServer;true;set_OnDispose;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisPubSubServer;true;set_OnError;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisPubSubServer;true;set_OnEvent;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisPubSubServer;true;set_OnFailover;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisPubSubServer;true;set_OnInit;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisPubSubServer;true;set_OnMessage;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisPubSubServer;true;set_OnStart;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisPubSubServer;true;set_OnStop;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisPubSubServer;true;set_OnUnSubscribe;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscription;true;set_OnMessage;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscription;true;set_OnMessageBytes;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscription;true;set_OnSubscribe;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscription;true;set_OnUnSubscribe;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscriptionAsync;true;add_OnMessageAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscriptionAsync;true;add_OnMessageBytesAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscriptionAsync;true;add_OnSubscribeAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscriptionAsync;true;add_OnUnSubscribeAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscriptionAsync;true;remove_OnMessageAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscriptionAsync;true;remove_OnMessageBytesAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscriptionAsync;true;remove_OnSubscribeAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscriptionAsync;true;remove_OnUnSubscribeAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Reflection;DelegateFactory+LateBoundMethod;false;BeginInvoke;(System.Object,System.Object[],System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Reflection;DelegateFactory+LateBoundVoid;false;BeginInvoke;(System.Object,System.Object[],System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;DefaultScripts;false;MatchesStringValue;(System.Object,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;ISharpPages;true;OneTimePage;(System.String,System.String,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;JsExpressionUtils;false;GetJsExpressionAndEvaluate;(System.ReadOnlyMemory,ServiceStack.Script.ScriptScopeContext,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;JsExpressionUtils;false;GetJsExpressionAndEvaluateAsync;(System.ReadOnlyMemory,ServiceStack.Script.ScriptScopeContext,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;JsExpressionUtils;false;GetJsExpressionAndEvaluateToBool;(System.ReadOnlyMemory,ServiceStack.Script.ScriptScopeContext,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;JsExpressionUtils;false;GetJsExpressionAndEvaluateToBoolAsync;(System.ReadOnlyMemory,ServiceStack.Script.ScriptScopeContext,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;Lisp+BuiltInFunc;false;BuiltInFunc;(System.String,System.Int32,ServiceStack.Script.Lisp+BuiltInFuncBody);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;Lisp+BuiltInFuncBody;false;BeginInvoke;(ServiceStack.Script.Lisp+Interpreter,System.Object[],System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;Lisp+Cell;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| ServiceStack.Script;Lisp+Cell;false;Walk;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;Lisp+Interpreter;false;Def;(System.String,System.Int32,ServiceStack.Script.Lisp+BuiltInFuncBody);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;Lisp+Interpreter;false;Def;(System.String,System.Int32,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;Lisp+Sym;false;New;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;PageFormat;false;set_EncodeValue;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;PageFormat;false;set_OnExpressionException;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;PageFormat;false;set_OnViewException;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;PageFormat;false;set_ResolveLayout;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;ParseRealNumber;false;BeginInvoke;(System.ReadOnlySpan,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;ScriptContext;false;RemoveBlocks;(System.Predicate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;ScriptContext;false;RemoveFilters;(System.Predicate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;ScriptContext;false;RemovePlugins;(System.Predicate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;ScriptContext;false;set_OnAfterPlugins;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;ScriptContext;false;set_OnRenderException;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;ScriptContext;false;set_OnUnhandledExpression;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;ScriptMethodInfo;false;GetScriptMethods;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;SharpPages;false;OneTimePage;(System.String,System.String,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Serialization;XmlSerializerWrapper;false;ReadObject;(System.Xml.XmlDictionaryReader);;Argument[0];ReturnValue;taint;df-generated | +| ServiceStack.Support;ActionExecHandler;false;ActionExecHandler;(System.Action,System.Threading.AutoResetEvent);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Support;AdapterBase;false;Execute;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Support;AdapterBase;false;Execute<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Support;AdapterBase;false;ExecuteAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Support;AdapterBase;false;ExecuteAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Support;AdapterBase;false;ExecuteAsync<>;(System.Func>,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Support;AdapterBase;false;ExecuteAsync<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Testing;BasicAppHost;false;set_ConfigFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Testing;BasicAppHost;false;set_ConfigureAppHost;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Testing;BasicAppHost;false;set_ConfigureContainer;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Testing;BasicAppHost;false;set_UseServiceController;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Testing;MockRestGateway;false;set_ResultsFilter;(ServiceStack.Testing.RestGatewayDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Testing;RestGatewayDelegate;false;BeginInvoke;(System.String,System.Type,System.Object,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ConvertInstanceDelegate;false;BeginInvoke;(System.Object,System.Type,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ConvertObjectDelegate;false;BeginInvoke;(System.Object,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DateTimeSerializer;false;set_OnParseErrorFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializationErrorDelegate;false;BeginInvoke;(System.Object,System.Type,System.String,System.String,System.Exception,System.AsyncCallback,System.Object);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeArrayWithElements<,>;false;ParseGenericArray;(System.ReadOnlySpan,ServiceStack.Text.Common.ParseStringSpanDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeArrayWithElements<,>;false;ParseGenericArray;(System.String,ServiceStack.Text.Common.ParseStringDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeArrayWithElements<>+ParseArrayOfElementsDelegate;false;BeginInvoke;(System.ReadOnlySpan,ServiceStack.Text.Common.ParseStringSpanDelegate,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeArrayWithElements<>+ParseArrayOfElementsDelegate;false;BeginInvoke;(System.ReadOnlySpan,ServiceStack.Text.Common.ParseStringSpanDelegate,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeArrayWithElements<>+ParseArrayOfElementsDelegate;false;Invoke;(System.ReadOnlySpan,ServiceStack.Text.Common.ParseStringSpanDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeDictionary<>;false;ParseDictionary<,>;(System.ReadOnlySpan,System.Type,ServiceStack.Text.Common.ParseStringSpanDelegate,ServiceStack.Text.Common.ParseStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeDictionary<>;false;ParseDictionary<,>;(System.ReadOnlySpan,System.Type,ServiceStack.Text.Common.ParseStringSpanDelegate,ServiceStack.Text.Common.ParseStringSpanDelegate);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeDictionary<>;false;ParseDictionary<,>;(System.String,System.Type,ServiceStack.Text.Common.ParseStringDelegate,ServiceStack.Text.Common.ParseStringDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeDictionary<>;false;ParseDictionary<,>;(System.String,System.Type,ServiceStack.Text.Common.ParseStringDelegate,ServiceStack.Text.Common.ParseStringDelegate);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeDictionary<>;false;ParseDictionaryType;(System.ReadOnlySpan,System.Type,System.Type[],ServiceStack.Text.Common.ParseStringSpanDelegate,ServiceStack.Text.Common.ParseStringSpanDelegate);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeDictionary<>;false;ParseDictionaryType;(System.ReadOnlySpan,System.Type,System.Type[],ServiceStack.Text.Common.ParseStringSpanDelegate,ServiceStack.Text.Common.ParseStringSpanDelegate);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeDictionary<>;false;ParseDictionaryType;(System.String,System.Type,System.Type[],ServiceStack.Text.Common.ParseStringDelegate,ServiceStack.Text.Common.ParseStringDelegate);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeDictionary<>;false;ParseDictionaryType;(System.String,System.Type,System.Type[],ServiceStack.Text.Common.ParseStringDelegate,ServiceStack.Text.Common.ParseStringDelegate);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeListWithElements<,>;false;ParseGenericList;(System.ReadOnlySpan,System.Type,ServiceStack.Text.Common.ParseStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeListWithElements<,>;false;ParseGenericList;(System.String,System.Type,ServiceStack.Text.Common.ParseStringDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeListWithElements<>+ParseListDelegate;false;BeginInvoke;(System.ReadOnlySpan,System.Type,ServiceStack.Text.Common.ParseStringSpanDelegate,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeListWithElements<>+ParseListDelegate;false;BeginInvoke;(System.ReadOnlySpan,System.Type,ServiceStack.Text.Common.ParseStringSpanDelegate,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeListWithElements<>+ParseListDelegate;false;Invoke;(System.ReadOnlySpan,System.Type,ServiceStack.Text.Common.ParseStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeListWithElements<>;false;GetListTypeParseFn;(System.Type,System.Type,ServiceStack.Text.Common.ParseStringDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeListWithElements<>;false;GetListTypeParseStringSpanFn;(System.Type,System.Type,ServiceStack.Text.Common.ParseStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeStringSpanDelegate;false;BeginInvoke;(System.Type,System.ReadOnlySpan,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ITypeSerializer;true;set_ObjectDeserializer;(ServiceStack.Text.Common.ObjectDeserializerDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;JsWriter;false;WriteDynamic;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ObjectDeserializerDelegate;false;BeginInvoke;(System.ReadOnlySpan,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ParseStringDelegate;false;BeginInvoke;(System.String,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ParseStringSpanDelegate;false;BeginInvoke;(System.ReadOnlySpan,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ToStringDictionaryMethods<,,>;false;WriteGenericIDictionary;(System.IO.TextWriter,System.Collections.Generic.IDictionary,ServiceStack.Text.Common.WriteObjectDelegate,ServiceStack.Text.Common.WriteObjectDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ToStringDictionaryMethods<,,>;false;WriteGenericIDictionary;(System.IO.TextWriter,System.Collections.Generic.IDictionary,ServiceStack.Text.Common.WriteObjectDelegate,ServiceStack.Text.Common.WriteObjectDelegate);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ToStringDictionaryMethods<,,>;false;WriteIDictionary;(System.IO.TextWriter,System.Object,ServiceStack.Text.Common.WriteObjectDelegate,ServiceStack.Text.Common.WriteObjectDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ToStringDictionaryMethods<,,>;false;WriteIDictionary;(System.IO.TextWriter,System.Object,ServiceStack.Text.Common.WriteObjectDelegate,ServiceStack.Text.Common.WriteObjectDelegate);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;WriteObjectDelegate;false;BeginInvoke;(System.IO.TextWriter,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Json;JsonTypeSerializer;false;set_ObjectDeserializer;(ServiceStack.Text.Common.ObjectDeserializerDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Jsv;JsvTypeSerializer;false;set_ObjectDeserializer;(ServiceStack.Text.Common.ObjectDeserializerDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Pools;ObjectPool<>+Factory;false;BeginInvoke;(System.AsyncCallback,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Pools;ObjectPool<>;false;ObjectPool;(ServiceStack.Text.Pools.ObjectPool<>+Factory);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Pools;ObjectPool<>;false;ObjectPool;(ServiceStack.Text.Pools.ObjectPool<>+Factory,System.Int32);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Pools;PooledObject<>;false;PooledObject;(ServiceStack.Text.Pools.ObjectPool,System.Func,T>,System.Action,T>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Pools;PooledObject<>;false;PooledObject;(ServiceStack.Text.Pools.ObjectPool,System.Func,T>,System.Action,T>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;Config;false;set_ModelFactory;(ServiceStack.EmptyCtorFactoryDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;Config;false;set_OnDeserializationError;(ServiceStack.Text.Common.DeserializationErrorDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;Config;false;set_ParsePrimitiveFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;Config;false;set_TypeFinder;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;Config;false;set_TypeWriter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;CsvReader;false;ParseFields;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;CsvSerializer;false;set_OnSerialize;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;DefaultMemory;false;Deserialize;(System.IO.Stream,System.Type,ServiceStack.Text.Common.DeserializeStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;DefaultMemory;false;DeserializeAsync;(System.IO.Stream,System.Type,ServiceStack.Text.Common.DeserializeStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig;false;With;(System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.String,System.String,System.Func,System.Func,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,ServiceStack.EmptyCtorFactoryDelegate,System.String[],System.Nullable);;Argument[20];Argument[20].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig;false;With;(System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.String,System.String,System.Func,System.Func,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,ServiceStack.EmptyCtorFactoryDelegate,System.String[],System.Nullable);;Argument[21];Argument[21].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig;false;With;(System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.String,System.String,System.Func,System.Func,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,ServiceStack.EmptyCtorFactoryDelegate,System.String[],System.Nullable);;Argument[30];Argument[30].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig;false;set_AllowRuntimeType;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig;false;set_ModelFactory;(ServiceStack.EmptyCtorFactoryDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig;false;set_OnDeserializationError;(ServiceStack.Text.Common.DeserializationErrorDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig;false;set_ParsePrimitiveFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig;false;set_TypeFinder;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig;false;set_TypeWriter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig<>;false;set_DeSerializeFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig<>;false;set_OnDeserializedFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig<>;false;set_OnDeserializingFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig<>;false;set_OnSerializedFn;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig<>;false;set_OnSerializingFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig<>;false;set_RawDeserializeFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig<>;false;set_RawSerializeFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig<>;false;set_SerializeFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsonExtensions;false;ConvertAll<>;(ServiceStack.Text.JsonArrayObjects,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsonExtensions;false;ConvertTo<>;(ServiceStack.Text.JsonObject,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsonObject;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| ServiceStack.Text;JsonSerializer;false;set_OnSerialize;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;MemoryProvider;true;Deserialize;(System.IO.Stream,System.Type,ServiceStack.Text.Common.DeserializeStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;MemoryProvider;true;DeserializeAsync;(System.IO.Stream,System.Type,ServiceStack.Text.Common.DeserializeStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;NetCoreMemory;false;Deserialize;(System.IO.Stream,System.Type,ServiceStack.Text.Common.DeserializeStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;NetCoreMemory;false;DeserializeAsync;(System.IO.Stream,System.Type,ServiceStack.Text.Common.DeserializeStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| ServiceStack.Text;RecyclableMemoryStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | +| ServiceStack.Text;RecyclableMemoryStreamManager+EventHandler;false;BeginInvoke;(System.AsyncCallback,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager+LargeBufferDiscardedEventHandler;false;BeginInvoke;(ServiceStack.Text.RecyclableMemoryStreamManager+Events+MemoryStreamDiscardReason,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager+StreamLengthReportHandler;false;BeginInvoke;(System.Int64,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager+UsageReportEventHandler;false;BeginInvoke;(System.Int64,System.Int64,System.Int64,System.Int64,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_BlockCreated;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_BlockDiscarded;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_LargeBufferCreated;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_LargeBufferDiscarded;(ServiceStack.Text.RecyclableMemoryStreamManager+LargeBufferDiscardedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_StreamConvertedToArray;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_StreamCreated;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_StreamDisposed;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_StreamFinalized;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_StreamLength;(ServiceStack.Text.RecyclableMemoryStreamManager+StreamLengthReportHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_UsageReport;(ServiceStack.Text.RecyclableMemoryStreamManager+UsageReportEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_BlockCreated;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_BlockDiscarded;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_LargeBufferCreated;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_LargeBufferDiscarded;(ServiceStack.Text.RecyclableMemoryStreamManager+LargeBufferDiscardedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_StreamConvertedToArray;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_StreamCreated;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_StreamDisposed;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_StreamFinalized;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_StreamLength;(ServiceStack.Text.RecyclableMemoryStreamManager+StreamLengthReportHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_UsageReport;(ServiceStack.Text.RecyclableMemoryStreamManager+UsageReportEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;TypeConfig<>;false;set_OnDeserializing;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;TypeSerializer;false;set_OnSerialize;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Validation;ValidationFeature;false;set_ErrorResponseFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.VirtualPath;AbstractVirtualDirectoryBase;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| ServiceStack.VirtualPath;AbstractVirtualDirectoryBase;true;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| ServiceStack.VirtualPath;AbstractVirtualDirectoryBase;true;GetPathToRoot;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.VirtualPath;AbstractVirtualFileBase;true;GetPathToRoot;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.VirtualPath;FileSystemVirtualDirectory;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| ServiceStack.VirtualPath;ResourceVirtualDirectory;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| ServiceStack.Web;IContentTypes;true;Register;(System.String,ServiceStack.Web.StreamSerializerDelegate,ServiceStack.Web.StreamDeserializerDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IContentTypes;true;Register;(System.String,ServiceStack.Web.StreamSerializerDelegate,ServiceStack.Web.StreamDeserializerDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IContentTypes;true;RegisterAsync;(System.String,ServiceStack.Web.StreamSerializerDelegateAsync,ServiceStack.Web.StreamDeserializerDelegateAsync);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IContentTypes;true;RegisterAsync;(System.String,ServiceStack.Web.StreamSerializerDelegateAsync,ServiceStack.Web.StreamDeserializerDelegateAsync);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IHttpResult;true;set_ResultScope;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IRequestLogger;true;set_CurrentDateFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IRequestLogger;true;set_IgnoreFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IRequestLogger;true;set_RequestBodyTrackingFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IRequestLogger;true;set_RequestLogFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IRequestLogger;true;set_ResponseTrackingFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IRequestLogger;true;set_SkipLogging;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;StreamDeserializerDelegate;false;BeginInvoke;(System.Type,System.IO.Stream,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;StreamDeserializerDelegateAsync;false;BeginInvoke;(System.Type,System.IO.Stream,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;StreamSerializerDelegate;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,System.IO.Stream,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;StreamSerializerDelegateAsync;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,System.IO.Stream,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;StringDeserializerDelegate;false;BeginInvoke;(System.String,System.Type,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;StringSerializerDelegate;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;TextDeserializerDelegate;false;BeginInvoke;(System.Type,System.String,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;TextSerializerDelegate;false;BeginInvoke;(System.Object,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ActionInvoker;false;BeginInvoke;(System.Object,System.Object[],System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ApiAllowableValuesAttribute;false;ApiAllowableValuesAttribute;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ApiAllowableValuesAttribute;false;ApiAllowableValuesAttribute;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostBase;false;set_BeforeNextMiddleware;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostBase;false;set_NetCoreHandler;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostBase;true;ProcessRequest;(Microsoft.AspNetCore.Http.HttpContext,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostExtensions;false;AddIfNotExists<>;(System.Collections.Generic.List,T,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostExtensions;false;ConfigureOperation<>;(ServiceStack.IAppHost,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostExtensions;false;ConfigureOperations;(ServiceStack.IAppHost,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostExtensions;false;ConfigureType<>;(ServiceStack.IAppHost,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostExtensions;false;ConfigureTypes;(ServiceStack.IAppHost,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostExtensions;false;ConfigureTypes;(ServiceStack.IAppHost,System.Action,System.Predicate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostExtensions;false;ConfigureTypes;(ServiceStack.IAppHost,System.Action,System.Predicate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostExtensions;false;RegisterRequestBinder<>;(ServiceStack.IAppHost,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;EachOperation;(ServiceStack.AppMetadata,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;EachOperation;(ServiceStack.AppMetadata,System.Action,System.Predicate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;EachOperation;(ServiceStack.AppMetadata,System.Action,System.Predicate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;EachProperty;(ServiceStack.MetadataType,System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;EachProperty;(ServiceStack.MetadataType,System.Func,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;EachType;(ServiceStack.AppMetadata,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;EachType;(ServiceStack.AppMetadata,System.Action,System.Predicate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;EachType;(ServiceStack.AppMetadata,System.Action,System.Predicate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;Property;(ServiceStack.MetadataType,System.String,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;RemoveProperty;(ServiceStack.MetadataType,System.Predicate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;ToInput;(ServiceStack.InputAttributeBase,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppUtils;false;DbContextExec<,>;(System.IServiceProvider,System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppUtils;false;DbContextExec<,>;(System.IServiceProvider,System.Func,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppUtils;false;NewScope<>;(System.IServiceProvider,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppUtils;false;ToObjectDictionary;(System.Data.IDataReader,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncContext;false;ContinueWith;(System.Threading.Tasks.Task,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncContext;false;ContinueWith;(System.Threading.Tasks.Task,System.Action,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_ExceptionFilter;(ServiceStack.ExceptionFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_GlobalRequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_GlobalResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_HttpLogFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_OnAuthenticationRequired;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_OnDownloadProgress;(ServiceStack.ProgressDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_OnUploadProgress;(ServiceStack.ProgressDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_RequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_ResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_ResultsFilter;(ServiceStack.ResultsFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_ResultsFilterResponse;(ServiceStack.ResultsFilterResponseDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_StreamDeserializer;(ServiceStack.Web.StreamDeserializerDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_StreamSerializer;(ServiceStack.Web.StreamSerializerDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;AuthFeature;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;AuthFeature;(System.Func,ServiceStack.Auth.IAuthProvider[],System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;set_AllowGetAuthenticateRequests;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;set_AuthResponseDecorator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;set_IsValidUsernameFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;set_OnAuthenticateValidate;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;set_RegisterResponseDecorator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;set_SessionFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;set_ValidateFn;(ServiceStack.Auth.ValidateFn);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;set_ValidateRedirectLinks;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoMapping;false;RegisterConverter<,>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoMapping;false;RegisterPopulator<,>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoMappingUtils;false;ThenDo<>;(To,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryData;false;set_GlobalQueryFilter;(ServiceStack.QueryDataFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryDataExtensions;false;And<>;(ServiceStack.IDataQuery,System.Linq.Expressions.Expression>,ServiceStack.QueryCondition,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryDataExtensions;false;MemorySource<>;(ServiceStack.QueryDataContext,System.Func>,ServiceStack.Caching.ICacheClient,System.Nullable,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryDataExtensions;false;Or<>;(ServiceStack.IDataQuery,System.Linq.Expressions.Expression>,ServiceStack.QueryCondition,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryDataFeature;false;AddDataSource;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryDataFeature;false;AddDataSource<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryDataFeature;false;AddDataSource<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryDataFeature;false;RegisterQueryFilter<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryDataFeature;false;set_GenerateServiceFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryDataFeature;false;set_GlobalQueryFilter;(ServiceStack.QueryDataFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryMetadataFeature;false;set_MetadataFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CacheClientExtensions;false;GetOrCreate<>;(ServiceStack.Caching.ICacheClient,System.String,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CacheClientExtensions;false;GetOrCreate<>;(ServiceStack.Caching.ICacheClient,System.String,System.TimeSpan,System.Func);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CacheClientExtensions;false;GetOrCreateAsync<>;(ServiceStack.Caching.ICacheClientAsync,System.String,System.Func>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CacheClientExtensions;false;GetOrCreateAsync<>;(ServiceStack.Caching.ICacheClientAsync,System.String,System.TimeSpan,System.Func>);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CachedExpressionCompiler;false;Compile<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ClientConfig;false;set_EncodeDispositionFileName;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CompareTypeUtils;false;Aggregate;(System.Collections.IEnumerable,System.Func,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CompressedResult;false;set_ResultScope;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ContainerExtensions;false;AddSingleton<>;(ServiceStack.IContainer,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ContainerExtensions;false;AddTransient<>;(ServiceStack.IContainer,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ContainerNetCoreExtensions;false;AddScoped<,>;(Funq.Container,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ContainerNetCoreExtensions;false;AddScoped<>;(Funq.Container,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ContainerNetCoreExtensions;false;AddSingleton<,>;(Funq.Container,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ContainerNetCoreExtensions;false;AddSingleton<>;(Funq.Container,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ContainerNetCoreExtensions;false;AddTransient<,>;(Funq.Container,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ContainerNetCoreExtensions;false;AddTransient<>;(Funq.Container,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CsvRequestLogger;false;set_OnReadLastEntryError;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CsvRequestLogger;false;set_OnWriteLogsError;(System.Action,System.Exception>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CustomPlugin;false;CustomPlugin;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CustomPlugin;false;CustomPlugin;(System.String,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CustomPlugin;false;set_OnAfterPluginsLoaded;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CustomPlugin;false;set_OnBeforePluginsLoaded;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CustomPlugin;false;set_OnRegister;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CustomRequestFilter;false;CustomRequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CustomResponseFilter;false;CustomResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;DataConditionExpression;false;set_FieldGetter;(ServiceStack.GetMemberDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;Defer;false;Defer;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;DictionaryExtensions;false;ConvertAll<,,>;(System.Collections.Generic.IDictionary,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;DictionaryExtensions;false;ForEach<,>;(System.Collections.Generic.Dictionary,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;DictionaryExtensions;false;GetOrAdd<,>;(System.Collections.Generic.Dictionary,K,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;DictionaryExtensions;false;GetValue<,>;(System.Collections.Generic.Dictionary,TKey,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;DictionaryExtensions;false;MoveKey<,>;(System.Collections.Generic.Dictionary,TKey,TKey,System.Func);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;DisposableExtensions;false;Run<>;(T,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EmptyCtorDelegate;false;BeginInvoke;(System.AsyncCallback,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EmptyCtorFactoryDelegate;false;BeginInvoke;(System.Type,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;AllAsync<>;(System.Collections.Generic.IEnumerable>,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;AllAsync<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;AnyAsync<>;(System.Collections.Generic.IEnumerable>,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;AnyAsync<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;Each<,>;(System.Collections.Generic.IDictionary,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;Each<>;(System.Collections.Generic.IEnumerable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;Each<>;(System.Collections.Generic.IEnumerable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;EquivalentTo<,>;(System.Collections.Generic.IDictionary,System.Collections.Generic.IDictionary,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;EquivalentTo<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;EquivalentTo<>;(T[],T[],System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;Map<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;Map<>;(System.Collections.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;ToSafeDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EventSubscription;false;set_OnDispose;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EventSubscription;false;set_OnError;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EventSubscription;false;set_OnHungConnection;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EventSubscription;false;set_OnPublish;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EventSubscription;false;set_OnPublishAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EventSubscription;false;set_OnUnsubscribe;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EventSubscription;false;set_OnUnsubscribeAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EventSubscription;false;set_WriteEvent;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EventSubscription;false;set_WriteEventAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExceptionFilterDelegate;false;BeginInvoke;(System.Net.WebException,System.Net.WebResponse,System.String,System.Type,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExceptionFilterHttpDelegate;false;BeginInvoke;(System.Net.Http.HttpResponseMessage,System.String,System.Type,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;ExecAll<>;(System.Collections.Generic.IEnumerable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;ExecAllAsync<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;ExecAllReturnFirstAsync<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;ExecAllWithFirstOut<,>;(System.Collections.Generic.IEnumerable,System.Func,TReturn);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;ExecReturnFirstWithResult<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;ExecReturnFirstWithResultAsync<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;RetryOnException;(System.Action,System.Int32);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;RetryOnException;(System.Action,System.Nullable);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;RetryOnExceptionAsync;(System.Func,System.Int32);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;RetryOnExceptionAsync;(System.Func,System.Nullable);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;RetryUntilTrue;(System.Func,System.Nullable);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;RetryUntilTrueAsync;(System.Func>,System.Nullable);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExpressionUtils;false;AssignedValues<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExpressionUtils;false;GetFieldNames<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExpressionUtils;false;GetMemberExpression<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExpressionUtils;false;GetMemberName<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;FieldAccessor;false;FieldAccessor;(System.Reflection.FieldInfo,ServiceStack.GetMemberDelegate,ServiceStack.SetMemberDelegate,ServiceStack.SetMemberRefDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;FieldAccessor;false;FieldAccessor;(System.Reflection.FieldInfo,ServiceStack.GetMemberDelegate,ServiceStack.SetMemberDelegate,ServiceStack.SetMemberRefDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;FieldAccessor;false;FieldAccessor;(System.Reflection.FieldInfo,ServiceStack.GetMemberDelegate,ServiceStack.SetMemberDelegate,ServiceStack.SetMemberRefDelegate);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;FilesUploadFeature;false;set_FileResult;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;FuncUtils;false;TryExec;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;FuncUtils;false;TryExec<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;FuncUtils;false;TryExec<>;(System.Func,T);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;FuncUtils;false;WaitWhile;(System.Func,System.Int32,System.Int32);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;GenericAppHost;false;set_ConfigFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;GenericAppHost;false;set_ConfigureAppHost;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;GenericAppHost;false;set_ConfigureContainer;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;GetMemberDelegate;false;BeginInvoke;(System.Object,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;GetMemberDelegate<>;false;BeginInvoke;(T,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;GitHubGateway;false;set_GetJsonFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HostConfig;false;set_FallbackRestPath;(ServiceStack.Host.FallbackRestPathDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HostContext;false;ConfigureAppHost;(System.Action,System.Action,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HostContext;false;ConfigureAppHost;(System.Action,System.Action,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HostContext;false;ConfigureAppHost;(System.Action,System.Action,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HostContext;false;ConfigureAppHost;(System.Action,System.Action,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HtmlModule;false;set_FileContentsResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HtmlModuleContext;false;Cache;(System.String,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HtmlModulesFeature;false;Configure;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HtmlModulesFeature;false;set_FileContentsResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpCacheFeature;false;set_CacheControlFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpError;false;set_ResultScope;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpExtensions;false;EndHttpHandlerRequest;(ServiceStack.Web.IResponse,System.Boolean,System.Boolean,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpExtensions;false;EndHttpHandlerRequestAsync;(ServiceStack.Web.IResponse,System.Boolean,System.Boolean,System.Func);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpExtensions;false;EndRequestAsync;(ServiceStack.Web.IResponse,System.Boolean,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpRequestExtensions;false;EachRequest<>;(ServiceStack.Web.IRequest,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpRequestExtensions;false;ResolveItem;(ServiceStack.Web.IRequest,System.String,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpResponseExtensionsInternal;false;WriteToResponse;(ServiceStack.Web.IResponse,System.Object,ServiceStack.Web.StreamSerializerDelegateAsync,ServiceStack.Web.IRequest,System.Byte[],System.Byte[],System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpResponseExtensionsInternal;false;WriteToResponse;(ServiceStack.Web.IResponse,System.Object,ServiceStack.Web.StreamSerializerDelegateAsync,ServiceStack.Web.IRequest,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpResult;false;HttpResult;(System.Byte[],System.String);;Argument[0];Argument[this];taint;manual | +| ServiceStack;HttpResult;false;HttpResult;(System.IO.Stream,System.String);;Argument[0];Argument[this];taint;manual | +| ServiceStack;HttpResult;false;HttpResult;(System.Object);;Argument[0];Argument[this];taint;manual | +| ServiceStack;HttpResult;false;HttpResult;(System.Object,System.Net.HttpStatusCode);;Argument[0];Argument[this];taint;manual | +| ServiceStack;HttpResult;false;HttpResult;(System.Object,System.String);;Argument[0];Argument[this];taint;manual | +| ServiceStack;HttpResult;false;HttpResult;(System.Object,System.String,System.Net.HttpStatusCode);;Argument[0];Argument[this];taint;manual | +| ServiceStack;HttpResult;false;HttpResult;(System.String,System.String);;Argument[0];Argument[this];taint;manual | +| ServiceStack;HttpResult;false;set_ResultScope;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;DeleteFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;DeleteFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;DeleteFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;DeleteFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetBytesFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetBytesFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetBytesFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetBytesFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetCsvFromUrl;(System.String,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetCsvFromUrl;(System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetCsvFromUrlAsync;(System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetCsvFromUrlAsync;(System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetJsonFromUrl;(System.String,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetJsonFromUrl;(System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetJsonFromUrlAsync;(System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetJsonFromUrlAsync;(System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetStreamFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetStreamFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetStreamFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetStreamFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetStringFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetStringFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetStringFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetStringFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetXmlFromUrl;(System.String,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetXmlFromUrl;(System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetXmlFromUrlAsync;(System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetXmlFromUrlAsync;(System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;HeadFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;HeadFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;HeadFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;HeadFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;OptionsFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;OptionsFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;OptionsFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;OptionsFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchJsonToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchJsonToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchJsonToUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchJsonToUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchJsonToUrlAsync;(System.String,System.Object,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchJsonToUrlAsync;(System.String,System.Object,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchJsonToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchJsonToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchStringToUrl;(System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchStringToUrl;(System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchStringToUrlAsync;(System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchStringToUrlAsync;(System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchToUrl;(System.String,System.Object,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchToUrl;(System.String,System.Object,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchToUrl;(System.String,System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchToUrl;(System.String,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchToUrlAsync;(System.String,System.Object,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchToUrlAsync;(System.String,System.Object,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchToUrlAsync;(System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchToUrlAsync;(System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostBytesToUrl;(System.String,System.Byte[],System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostBytesToUrl;(System.String,System.Byte[],System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostBytesToUrlAsync;(System.String,System.Byte[],System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostBytesToUrlAsync;(System.String,System.Byte[],System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostCsvToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostCsvToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostCsvToUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostCsvToUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostCsvToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostCsvToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostFileToUrl;(System.String,System.IO.FileInfo,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostFileToUrl;(System.String,System.IO.FileInfo,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostFileToUrlAsync;(System.String,System.IO.FileInfo,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostFileToUrlAsync;(System.String,System.IO.FileInfo,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostJsonToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostJsonToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostJsonToUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostJsonToUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostJsonToUrlAsync;(System.String,System.Object,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostJsonToUrlAsync;(System.String,System.Object,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostJsonToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostJsonToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostStreamToUrl;(System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostStreamToUrl;(System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostStreamToUrlAsync;(System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostStreamToUrlAsync;(System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostStringToUrl;(System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostStringToUrl;(System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostStringToUrlAsync;(System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostStringToUrlAsync;(System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostToUrl;(System.String,System.Object,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostToUrl;(System.String,System.Object,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostToUrl;(System.String,System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostToUrl;(System.String,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostToUrlAsync;(System.String,System.Object,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostToUrlAsync;(System.String,System.Object,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostToUrlAsync;(System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostToUrlAsync;(System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostXmlToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostXmlToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostXmlToUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostXmlToUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostXmlToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostXmlToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutBytesToUrl;(System.String,System.Byte[],System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutBytesToUrl;(System.String,System.Byte[],System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutBytesToUrlAsync;(System.String,System.Byte[],System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutBytesToUrlAsync;(System.String,System.Byte[],System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutCsvToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutCsvToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutCsvToUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutCsvToUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutCsvToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutCsvToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutFileToUrl;(System.String,System.IO.FileInfo,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutFileToUrl;(System.String,System.IO.FileInfo,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutFileToUrlAsync;(System.String,System.IO.FileInfo,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutFileToUrlAsync;(System.String,System.IO.FileInfo,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutJsonToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutJsonToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutJsonToUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutJsonToUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutJsonToUrlAsync;(System.String,System.Object,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutJsonToUrlAsync;(System.String,System.Object,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutJsonToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutJsonToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutStreamToUrl;(System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutStreamToUrl;(System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutStreamToUrlAsync;(System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutStreamToUrlAsync;(System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutStringToUrl;(System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutStringToUrl;(System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutStringToUrlAsync;(System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutStringToUrlAsync;(System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutToUrl;(System.String,System.Object,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutToUrl;(System.String,System.Object,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutToUrl;(System.String,System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutToUrl;(System.String,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutToUrlAsync;(System.String,System.Object,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutToUrlAsync;(System.String,System.Object,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutToUrlAsync;(System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutToUrlAsync;(System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutXmlToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutXmlToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutXmlToUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutXmlToUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutXmlToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutXmlToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendBytesToUrl;(System.Net.Http.HttpClient,System.String,System.String,System.Byte[],System.String,System.String,System.Action,System.Action);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendBytesToUrl;(System.Net.Http.HttpClient,System.String,System.String,System.Byte[],System.String,System.String,System.Action,System.Action);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendBytesToUrl;(System.String,System.String,System.Byte[],System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendBytesToUrl;(System.String,System.String,System.Byte[],System.String,System.String,System.Action,System.Action);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendBytesToUrlAsync;(System.Net.Http.HttpClient,System.String,System.String,System.Byte[],System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendBytesToUrlAsync;(System.Net.Http.HttpClient,System.String,System.String,System.Byte[],System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendBytesToUrlAsync;(System.String,System.String,System.Byte[],System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendBytesToUrlAsync;(System.String,System.String,System.Byte[],System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStreamToUrl;(System.Net.Http.HttpClient,System.String,System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStreamToUrl;(System.Net.Http.HttpClient,System.String,System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStreamToUrl;(System.String,System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStreamToUrl;(System.String,System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStreamToUrlAsync;(System.Net.Http.HttpClient,System.String,System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStreamToUrlAsync;(System.Net.Http.HttpClient,System.String,System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStreamToUrlAsync;(System.String,System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStreamToUrlAsync;(System.String,System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStringToUrl;(System.Net.Http.HttpClient,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStringToUrl;(System.Net.Http.HttpClient,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStringToUrl;(System.String,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStringToUrl;(System.String,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStringToUrlAsync;(System.Net.Http.HttpClient,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStringToUrlAsync;(System.Net.Http.HttpClient,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStringToUrlAsync;(System.String,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStringToUrlAsync;(System.String,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;UploadFile;(System.Net.Http.HttpClient,System.Net.Http.HttpRequestMessage,System.IO.Stream,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;UploadFile;(System.Net.Http.HttpClient,System.Net.Http.HttpRequestMessage,System.IO.Stream,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[9];Argument[9].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;UploadFile;(System.Net.Http.HttpRequestMessage,System.IO.Stream,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;UploadFile;(System.Net.Http.HttpRequestMessage,System.IO.Stream,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;UploadFileAsync;(System.Net.Http.HttpClient,System.Net.Http.HttpRequestMessage,System.IO.Stream,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;UploadFileAsync;(System.Net.Http.HttpClient,System.Net.Http.HttpRequestMessage,System.IO.Stream,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[9];Argument[9].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;UploadFileAsync;(System.Net.Http.HttpRequestMessage,System.IO.Stream,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;UploadFileAsync;(System.Net.Http.HttpRequestMessage,System.IO.Stream,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;With;(System.Net.Http.HttpRequestMessage,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;set_CreateClient;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;set_HttpClientHandlerFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;AfterPluginLoaded<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;ConfigurePlugin<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;PostConfigurePlugin<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedMessageRequestFilter<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedMessageResponseFilter<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedRequestFilter<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedRequestFilter<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedRequestFilterAsync<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedRequestFilterAsync<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedResponseFilter<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedResponseFilter<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedResponseFilterAsync<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedResponseFilterAsync<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IContainer;true;AddSingleton;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IContainer;true;AddTransient;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IEventSubscription;true;set_OnUnsubscribe;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IEventSubscription;true;set_OnUnsubscribeAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IServerEvents;true;QueueAsyncTask;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;Inspect+Config;false;set_DumpTableFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;Inspect+Config;false;set_VarsFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;InstanceMapper;false;BeginInvoke;(System.Object,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IntExtensions;false;Times;(System.Int32,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IntExtensions;false;Times;(System.Int32,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IntExtensions;false;Times<>;(System.Int32,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IntExtensions;false;Times<>;(System.Int32,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IntExtensions;false;TimesAsync;(System.Int32,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IntExtensions;false;TimesAsync;(System.Int32,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IntExtensions;false;TimesAsync;(System.Int32,System.Func,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IntExtensions;false;TimesAsync<>;(System.Int32,System.Func>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;ToWebServiceException;(System.Net.Http.HttpResponseMessage,System.Object,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_ExceptionFilter;(ServiceStack.ExceptionFilterHttpDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_GlobalHttpMessageHandlerFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_GlobalRequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_GlobalResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_RequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_ResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_ResultsFilter;(ServiceStack.ResultsFilterHttpDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_ResultsFilterResponse;(ServiceStack.ResultsFilterHttpResponseDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_TypedUrlResolver;(ServiceStack.TypedUrlResolverDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_UrlResolver;(ServiceStack.UrlResolverDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ListExtensions;false;SafeWhere<>;(System.Collections.Generic.List,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;QueueAsyncTask;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_NotifyHeartbeatAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_NotifyJoinAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_NotifyLeaveAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_NotifyUpdateAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_OnError;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_OnRemoveSubscriptionAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_OnSubscribeAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_OnUnsubscribeAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_OnUpdateAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_Serialize;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MetadataFeature;false;set_DetailPageFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MetadataFeature;false;set_IndexPageFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MetadataFeature;false;set_TagFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MethodInvoker;false;BeginInvoke;(System.Object,System.Object[],System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MimeTypes;false;set_IsBinaryFilter;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ModelConfig<>;false;Id;(ServiceStack.GetMemberDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ModularStartup;false;ModularStartup;(Microsoft.Extensions.Configuration.IConfiguration,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;NativeTypesFeature;false;ExportAttribute;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;NativeTypesFeature;false;ExportAttribute<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;NetCoreAppHostExtensions;false;ConfigureAppHost;(Microsoft.AspNetCore.Hosting.IWebHostBuilder,System.Action,System.Action,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;NetCoreAppHostExtensions;false;ConfigureAppHost;(Microsoft.AspNetCore.Hosting.IWebHostBuilder,System.Action,System.Action,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;NetCoreAppHostExtensions;false;ConfigureAppHost;(Microsoft.AspNetCore.Hosting.IWebHostBuilder,System.Action,System.Action,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;NetCoreAppHostExtensions;false;ConfigureAppHost;(Microsoft.AspNetCore.Hosting.IWebHostBuilder,System.Action,System.Action,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;NetStandardPclExportClient;false;GetHeader;(System.Net.WebHeaderCollection,System.String,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ObjectActivator;false;BeginInvoke;(System.Object[],System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;OrderByExpression;false;OrderByExpression;(System.String,ServiceStack.GetMemberDelegate,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PclExportClient;false;CreateTimer;(System.Threading.TimerCallback,System.TimeSpan,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PclExportClient;false;GetHeader;(System.Net.WebHeaderCollection,System.String,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PclExportClient;false;RunOnUiThread;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PerfUtils;false;Measure;(System.Action,System.Int32,System.Int32,System.Action,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PerfUtils;false;Measure;(System.Action,System.Int32,System.Int32,System.Action,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PerfUtils;false;Measure;(System.Action,System.Int32,System.Int32,System.Action,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PerfUtils;false;Measure;(System.Action,System.Int32,System.Int32,System.Action,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PerfUtils;false;MeasureFor;(System.Action,System.Int32);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PlatformExtensions;false;ToObjectDictionary;(System.Object,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;Plugins;false;AddToAppMetadata;(ServiceStack.IAppHost,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;Plugins;false;ModifyAppMetadata;(ServiceStack.IAppHost,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PocoDataSource;false;Create<>;(System.Collections.Generic.ICollection,System.Func,System.Int64>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PocoDataSource;false;Create<>;(System.Collections.Generic.IEnumerable,System.Func,System.Int64>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PopulateMemberDelegate;false;BeginInvoke;(System.Object,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PreProcessRequest;false;set_HandleUploadFileAsync;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProcessUtils;false;RunAsync;(System.Diagnostics.ProcessStartInfo,System.Nullable,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProcessUtils;false;RunAsync;(System.Diagnostics.ProcessStartInfo,System.Nullable,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProcessUtils;false;RunShellAsync;(System.String,System.String,System.Nullable,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProcessUtils;false;RunShellAsync;(System.String,System.String,System.Nullable,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProfilingFeature;false;set_DiagnosticEntryFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProfilingFeature;false;set_ExcludeRequestsFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProfilingFeature;false;set_ResponseTrackingFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProfilingFeature;false;set_TagResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProgressDelegate;false;BeginInvoke;(System.Int64,System.Int64,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PropertyAccessor;false;PropertyAccessor;(System.Reflection.PropertyInfo,ServiceStack.GetMemberDelegate,ServiceStack.SetMemberDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PropertyAccessor;false;PropertyAccessor;(System.Reflection.PropertyInfo,ServiceStack.GetMemberDelegate,ServiceStack.SetMemberDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeature;false;ProxyFeature;(System.Func,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeature;false;ProxyFeature;(System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeature;false;set_ProxyRequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeature;false;set_ProxyResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeature;false;set_TransformRequest;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeature;false;set_TransformResponse;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeatureHandler;false;set_ProxyRequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeatureHandler;false;set_ProxyResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeatureHandler;false;set_ResolveUrl;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeatureHandler;false;set_TransformRequest;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeatureHandler;false;set_TransformResponse;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;QueryDataFilterDelegate;false;BeginInvoke;(ServiceStack.IDataQuery,ServiceStack.IQueryData,ServiceStack.Web.IRequest,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;QueryStringSerializer;false;set_ComplexTypeStrategy;(ServiceStack.WriteComplexTypeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RegistrationFeature;false;set_ValidateFn;(ServiceStack.Auth.ValidateFn);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestContext;false;GetOrCreate<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestExtensions;false;GetSessionFromSourceAsync;(ServiceStack.Web.IRequest,System.String,System.Func,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestExtensions;false;ToOptimizedResultUsingCache<>;(ServiceStack.Web.IRequest,ServiceStack.Caching.ICacheClient,System.String,System.Func);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestExtensions;false;ToOptimizedResultUsingCache<>;(ServiceStack.Web.IRequest,ServiceStack.Caching.ICacheClient,System.String,System.Nullable,System.Func);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestExtensions;false;ToOptimizedResultUsingCacheAsync<>;(ServiceStack.Web.IRequest,ServiceStack.Caching.ICacheClientAsync,System.String,System.Func,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestExtensions;false;ToOptimizedResultUsingCacheAsync<>;(ServiceStack.Web.IRequest,ServiceStack.Caching.ICacheClientAsync,System.String,System.Nullable,System.Func,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestLogsFeature;false;set_CurrentDateFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestLogsFeature;false;set_IgnoreFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestLogsFeature;false;set_RequestBodyTrackingFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestLogsFeature;false;set_RequestLogFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestLogsFeature;false;set_ResponseTrackingFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestLogsFeature;false;set_SkipLogging;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ResultsFilterDelegate;false;BeginInvoke;(System.Type,System.String,System.String,System.Object,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ResultsFilterHttpDelegate;false;BeginInvoke;(System.Type,System.String,System.String,System.Object,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ResultsFilterHttpResponseDelegate;false;BeginInvoke;(System.Net.Http.HttpResponseMessage,System.Object,System.String,System.String,System.Object,System.AsyncCallback,System.Object);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ResultsFilterResponseDelegate;false;BeginInvoke;(System.Net.WebResponse,System.Object,System.String,System.String,System.Object,System.AsyncCallback,System.Object);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;SameSiteCookiesServiceCollectionExtensions;false;ConfigureNonBreakingSameSiteCookies;(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventCallback;false;BeginInvoke;(ServiceStack.ServerEventsClient,ServiceStack.ServerEventMessage,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsClient;false;AddListener;(System.String,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsClient;false;HasListener;(System.String,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsClient;false;RemoveListener;(System.String,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsClient;false;set_AllRequestFilters;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsClient;false;set_EventStreamRequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsClient;false;set_HeartbeatRequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsClient;false;set_HttpClientHandlerFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsClient;false;set_ResolveStreamUrl;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsClient;false;set_UnRegisterRequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnConnect;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnCreated;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnDispose;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnError;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnHeartbeatInit;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnHungConnection;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnInit;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnPublish;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnPublishAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnSubscribe;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnSubscribeAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnUnsubscribe;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnUnsubscribeAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnUpdateAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_Serialize;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_WriteEvent;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_WriteEventAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;CaptureHttp;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;PrepareWebRequest;(System.String,System.String,System.Object,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;SendStringToUrl;(System.Net.HttpWebRequest,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;SendStringToUrl;(System.Net.HttpWebRequest,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;SendStringToUrlAsync;(System.Net.HttpWebRequest,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;SendStringToUrlAsync;(System.Net.HttpWebRequest,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;ToWebServiceException;(System.Net.WebException,System.Func,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;UploadFile;(System.Net.WebRequest,System.IO.Stream,System.String,System.String,System.String,System.Action,System.String,System.String);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_ExceptionFilter;(ServiceStack.ExceptionFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_GlobalRequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_GlobalResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_HttpLogFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_OnAuthenticationRequired;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_OnDownloadProgress;(ServiceStack.ProgressDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_OnUploadProgress;(ServiceStack.ProgressDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_RequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_ResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_ResultsFilter;(ServiceStack.ResultsFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_ResultsFilterResponse;(ServiceStack.ResultsFilterResponseDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_TypedUrlResolver;(ServiceStack.TypedUrlResolverDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_UrlResolver;(ServiceStack.UrlResolverDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;true;HandleResponseException<>;(System.Exception,System.Object,System.String,System.Func,System.Func,TResponse);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;true;HandleResponseException<>;(System.Exception,System.Object,System.String,System.Func,System.Func,TResponse);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientExtensions;false;Apply<>;(T,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceExtensions;false;RunAction<,>;(TService,TRequest,System.Func,ServiceStack.Web.IRequest);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceStackHost;false;AfterPluginLoaded<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceStackHost;false;ConfigurePlugin<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceStackHost;false;PostConfigurePlugin<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceStackHost;false;RegisterTypedMessageRequestFilter<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceStackHost;false;RegisterTypedMessageResponseFilter<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceStackHost;false;RegisterTypedRequestFilter<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceStackHost;false;RegisterTypedRequestFilter<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceStackHost;false;RegisterTypedRequestFilterAsync<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceStackHost;false;RegisterTypedRequestFilterAsync<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceStackHost;false;RegisterTypedResponseFilter<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceStackHost;false;RegisterTypedResponseFilter<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceStackHost;false;RegisterTypedResponseFilterAsync<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceStackHost;false;RegisterTypedResponseFilterAsync<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;SetMemberDelegate;false;BeginInvoke;(System.Object,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;SetMemberDelegate<>;false;BeginInvoke;(T,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;SetMemberRefDelegate;false;BeginInvoke;(System.Object,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;SetMemberRefDelegate<>;false;BeginInvoke;(T,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;SharpPageHandler;false;set_Filter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;SharpPageHandler;false;set_ValidateFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;SimpleContainer;false;AddSingleton;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;SimpleContainer;false;AddTransient;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;StaticActionInvoker;false;BeginInvoke;(System.Object[],System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;StaticMethodInvoker;false;BeginInvoke;(System.Object[],System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;StringExtensions;false;ToCsv<>;(T,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;StringExtensions;false;ToJson<>;(T,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;StringExtensions;false;ToJsv<>;(T,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;SvgFeature;false;set_ValidateFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TaskExt;false;RunSync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TaskExt;false;RunSync<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TaskExtensions;false;Error;(System.Threading.Tasks.Task,System.Action,System.Boolean,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TaskExtensions;false;Error<>;(System.Threading.Tasks.Task,System.Action,System.Boolean,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TaskExtensions;false;Success;(System.Threading.Tasks.Task,System.Action,System.Boolean,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TaskExtensions;false;Success<>;(System.Threading.Tasks.Task,System.Action,System.Boolean,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TaskUtils;false;EachAsync<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TaskUtils;false;Then;(System.Threading.Tasks.Task,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TaskUtils;false;Then<,>;(System.Threading.Tasks.Task,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TopLevelAppModularStartup;false;Create<>;(THost,Microsoft.Extensions.Configuration.IConfiguration,System.Func>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TopLevelAppModularStartup;false;TopLevelAppModularStartup;(System.Type,ServiceStack.AppHostBase,Microsoft.Extensions.Configuration.IConfiguration,System.Func>);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TypedUrlResolverDelegate;false;BeginInvoke;(ServiceStack.IServiceClientMeta,System.String,System.Object,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UiFeature;false;set_Configure;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UploadLocation;false;UploadLocation;(System.String,ServiceStack.IO.IVirtualFiles,System.Func,System.String,System.String,System.String[],ServiceStack.FilesUploadOperation,System.Nullable,System.Nullable,System.Nullable,System.Action,System.Action,System.Action,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UploadLocation;false;UploadLocation;(System.String,ServiceStack.IO.IVirtualFiles,System.Func,System.String,System.String,System.String[],ServiceStack.FilesUploadOperation,System.Nullable,System.Nullable,System.Nullable,System.Action,System.Action,System.Action,System.Func);;Argument[10];Argument[10].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UploadLocation;false;UploadLocation;(System.String,ServiceStack.IO.IVirtualFiles,System.Func,System.String,System.String,System.String[],ServiceStack.FilesUploadOperation,System.Nullable,System.Nullable,System.Nullable,System.Action,System.Action,System.Action,System.Func);;Argument[11];Argument[11].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UploadLocation;false;UploadLocation;(System.String,ServiceStack.IO.IVirtualFiles,System.Func,System.String,System.String,System.String[],ServiceStack.FilesUploadOperation,System.Nullable,System.Nullable,System.Nullable,System.Action,System.Action,System.Action,System.Func);;Argument[12];Argument[12].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UploadLocation;false;UploadLocation;(System.String,ServiceStack.IO.IVirtualFiles,System.Func,System.String,System.String,System.String[],ServiceStack.FilesUploadOperation,System.Nullable,System.Nullable,System.Nullable,System.Action,System.Action,System.Action,System.Func);;Argument[13];Argument[13].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UploadLocation;false;set_ResolvePath;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UploadLocation;false;set_ValidateDelete;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UploadLocation;false;set_ValidateDownload;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UploadLocation;false;set_ValidateUpload;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UrlExtensions;false;ToUrl;(System.Object,System.String,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UrlResolverDelegate;false;BeginInvoke;(ServiceStack.IServiceClientMeta,System.String,System.String,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;WriteComplexTypeDelegate;false;BeginInvoke;(System.IO.TextWriter,System.String,System.Object,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;X;false;Apply<>;(T,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;X;false;Map<,>;(From,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;XLinqExtensions;false;GetAttributeValueOrDefault<>;(System.Xml.Linq.XAttribute,System.String,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;XLinqExtensions;false;GetElementValueOrDefault<>;(System.Xml.Linq.XElement,System.String,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | System.Buffers;ArrayBufferWriter<>;false;GetMemory;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | | System.Buffers;ArrayBufferWriter<>;false;get_WrittenMemory;();;Argument[this];ReturnValue;taint;df-generated | | System.Buffers;BuffersExtensions;false;PositionOf<>;(System.Buffers.ReadOnlySequence,T);;Argument[0];ReturnValue;taint;df-generated | @@ -3917,6 +5990,58 @@ summary | System.Data.Entity;DbSet<>;false;Attach;(TEntity);;Argument[0];Argument[this].Element;value;manual | | System.Data.Entity;DbSet<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | | System.Data.Entity;DbSet<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.SqlClient;OnChangeEventHandler;false;BeginInvoke;(System.Object,System.Data.SqlClient.SqlNotificationEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlBulkCopy;false;add_SqlRowsCopied;(System.Data.SqlClient.SqlRowsCopiedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlBulkCopy;false;remove_SqlRowsCopied;(System.Data.SqlClient.SqlRowsCopiedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlCommand;false;BeginExecuteNonQuery;(System.AsyncCallback,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlCommand;false;BeginExecuteReader;(System.AsyncCallback,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlCommand;false;BeginExecuteReader;(System.AsyncCallback,System.Object,System.Data.CommandBehavior);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlCommand;false;BeginExecuteXmlReader;(System.AsyncCallback,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlCommand;false;ExecuteDbDataReaderAsync;(System.Data.CommandBehavior,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.Data.SqlClient;SqlCommand;false;SqlCommand;(System.String);;Argument[0];Argument[this];taint;manual | +| System.Data.SqlClient;SqlCommand;false;SqlCommand;(System.String,System.Data.SqlClient.SqlConnection);;Argument[0];Argument[this];taint;manual | +| System.Data.SqlClient;SqlCommand;false;SqlCommand;(System.String,System.Data.SqlClient.SqlConnection,System.Data.SqlClient.SqlTransaction);;Argument[0];Argument[this];taint;manual | +| System.Data.SqlClient;SqlCommand;false;add_StatementCompleted;(System.Data.StatementCompletedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlCommand;false;remove_StatementCompleted;(System.Data.StatementCompletedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlCommandBuilder;false;InitializeCommand;(System.Data.Common.DbCommand);;Argument[0];ReturnValue;taint;df-generated | +| System.Data.SqlClient;SqlCommandBuilder;false;get_CatalogSeparator;();;Argument[this];ReturnValue;taint;df-generated | +| System.Data.SqlClient;SqlCommandBuilder;false;get_QuotePrefix;();;Argument[this];ReturnValue;taint;df-generated | +| System.Data.SqlClient;SqlCommandBuilder;false;get_QuoteSuffix;();;Argument[this];ReturnValue;taint;df-generated | +| System.Data.SqlClient;SqlCommandBuilder;false;get_SchemaSeparator;();;Argument[this];ReturnValue;taint;df-generated | +| System.Data.SqlClient;SqlCommandBuilder;false;set_CatalogSeparator;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Data.SqlClient;SqlCommandBuilder;false;set_QuotePrefix;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Data.SqlClient;SqlCommandBuilder;false;set_QuoteSuffix;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Data.SqlClient;SqlCommandBuilder;false;set_SchemaSeparator;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Data.SqlClient;SqlConnection;false;OpenAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | +| System.Data.SqlClient;SqlConnection;false;add_InfoMessage;(System.Data.SqlClient.SqlInfoMessageEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlConnection;false;remove_InfoMessage;(System.Data.SqlClient.SqlInfoMessageEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlConnectionStringBuilder;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Data.SqlClient;SqlConnectionStringBuilder;false;get_Keys;();;Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Data.SqlClient;SqlConnectionStringBuilder;false;get_Values;();;Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Data.SqlClient;SqlDataAdapter;false;add_RowUpdated;(System.Data.SqlClient.SqlRowUpdatedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlDataAdapter;false;add_RowUpdating;(System.Data.SqlClient.SqlRowUpdatingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlDataAdapter;false;remove_RowUpdated;(System.Data.SqlClient.SqlRowUpdatedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlDataAdapter;false;remove_RowUpdating;(System.Data.SqlClient.SqlRowUpdatingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlDataReader;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.SqlClient;SqlDataReader;false;GetFieldValue<>;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Data.SqlClient;SqlDataReader;false;GetFieldValueAsync<>;(System.Int32,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.Data.SqlClient;SqlDataReader;false;GetProviderSpecificValue;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Data.SqlClient;SqlDataReader;false;GetProviderSpecificValues;(System.Object[]);;Argument[this];Argument[0].Element;taint;df-generated | +| System.Data.SqlClient;SqlDataReader;false;GetTextReader;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Data.SqlClient;SqlDependency;false;add_OnChange;(System.Data.SqlClient.OnChangeEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlDependency;false;remove_OnChange;(System.Data.SqlClient.OnChangeEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlErrorCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Data.SqlClient;SqlErrorCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.SqlClient;SqlInfoMessageEventHandler;false;BeginInvoke;(System.Object,System.Data.SqlClient.SqlInfoMessageEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlParameterCollection;false;Add;(System.Object);;Argument[0];Argument[this].Element;value;manual | +| System.Data.SqlClient;SqlParameterCollection;false;AddRange;(System.Array);;Argument[0].Element;Argument[this].Element;value;manual | +| System.Data.SqlClient;SqlParameterCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Data.SqlClient;SqlParameterCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Data.SqlClient;SqlParameterCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.SqlClient;SqlParameterCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | +| System.Data.SqlClient;SqlRowUpdatedEventHandler;false;BeginInvoke;(System.Object,System.Data.SqlClient.SqlRowUpdatedEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlRowUpdatingEventHandler;false;BeginInvoke;(System.Object,System.Data.SqlClient.SqlRowUpdatingEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlRowsCopiedEventHandler;false;BeginInvoke;(System.Object,System.Data.SqlClient.SqlRowsCopiedEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | System.Data.SqlTypes;SqlBinary;false;Add;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[0];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlBinary;false;Add;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[1];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlBinary;false;Concat;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[0];ReturnValue;taint;df-generated | @@ -3945,6 +6070,8 @@ summary | System.Data.SqlTypes;SqlDecimal;false;Floor;(System.Data.SqlTypes.SqlDecimal);;Argument[0];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlDecimal;false;Round;(System.Data.SqlTypes.SqlDecimal,System.Int32);;Argument[0];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlDecimal;false;Truncate;(System.Data.SqlTypes.SqlDecimal,System.Int32);;Argument[0];ReturnValue;taint;df-generated | +| System.Data.SqlTypes;SqlFileStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| System.Data.SqlTypes;SqlFileStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | System.Data.SqlTypes;SqlGuid;false;SqlGuid;(System.Byte[]);;Argument[0].Element;Argument[this];taint;df-generated | | System.Data.SqlTypes;SqlGuid;false;ToByteArray;();;Argument[this];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlGuid;false;ToSqlBinary;();;Argument[this];ReturnValue;taint;df-generated | @@ -4732,6 +6859,175 @@ summary | System.Diagnostics;TraceSource;false;get_Switch;();;Argument[this];ReturnValue;taint;df-generated | | System.Diagnostics;TraceSource;false;remove_Initializing;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | System.Diagnostics;TraceSource;false;set_Switch;(System.Diagnostics.SourceSwitch);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Design;CategoryNameCollection;false;CategoryNameCollection;(System.Drawing.Design.CategoryNameCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Drawing.Design;CategoryNameCollection;false;CategoryNameCollection;(System.String[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Drawing.Design;CategoryNameCollection;false;CopyTo;(System.String[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.Drawing.Design;CategoryNameCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;BitmapData;false;get_Scan0;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;BitmapData;false;set_Scan0;(System.IntPtr);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ColorMap;false;get_NewColor;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ColorMap;false;get_OldColor;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ColorMap;false;set_NewColor;(System.Drawing.Color);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ColorMap;false;set_OldColor;(System.Drawing.Color);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ColorPalette;false;get_Entries;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;Encoder;false;Encoder;(System.Guid);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;Encoder;false;get_Guid;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Byte);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Byte,System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Byte[]);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Byte[],System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int16);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int16[]);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32,System.Drawing.Imaging.EncoderParameterValueType,System.IntPtr);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32,System.Int32);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32,System.Int32,System.Int32);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32,System.Int32,System.Int32,System.Int32);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32[],System.Int32[]);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32[],System.Int32[],System.Int32[],System.Int32[]);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int64);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int64,System.Int64);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int64[]);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int64[],System.Int64[]);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;get_Encoder;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;set_Encoder;(System.Drawing.Imaging.Encoder);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameters;false;get_Param;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;EncoderParameters;false;set_Param;(System.Drawing.Imaging.EncoderParameter[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Drawing.Imaging;FrameDimension;false;FrameDimension;(System.Guid);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;FrameDimension;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;FrameDimension;false;get_Guid;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;get_Clsid;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;get_CodecName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;get_DllName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;get_FilenameExtension;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;get_FormatDescription;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;get_FormatID;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;get_MimeType;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;get_SignatureMasks;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;get_SignaturePatterns;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;set_Clsid;(System.Guid);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;set_CodecName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;set_DllName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;set_FilenameExtension;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;set_FormatDescription;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;set_FormatID;(System.Guid);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;set_MimeType;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;set_SignatureMasks;(System.Byte[][]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;set_SignaturePatterns;(System.Byte[][]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageFormat;false;ImageFormat;(System.Guid);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageFormat;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageFormat;false;get_Guid;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;Metafile;false;GetHenhmetafile;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;PlayRecordCallback;false;BeginInvoke;(System.Drawing.Imaging.EmfPlusRecordType,System.Int32,System.Int32,System.IntPtr,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;InvalidPrinterException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | +| System.Drawing.Printing;InvalidPrinterException;false;InvalidPrinterException;(System.Drawing.Printing.PrinterSettings);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;MarginsConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;df-generated | +| System.Drawing.Printing;MarginsConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PageSettings;false;Clone;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PageSettings;false;PageSettings;(System.Drawing.Printing.PrinterSettings);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PageSettings;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PageSettings;false;get_Margins;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PageSettings;false;get_PaperSize;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PageSettings;false;get_PaperSource;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PageSettings;false;get_PrintableArea;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PageSettings;false;get_PrinterResolution;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PageSettings;false;get_PrinterSettings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PageSettings;false;set_Margins;(System.Drawing.Printing.Margins);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PageSettings;false;set_PaperSize;(System.Drawing.Printing.PaperSize);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PageSettings;false;set_PaperSource;(System.Drawing.Printing.PaperSource);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PageSettings;false;set_PrinterResolution;(System.Drawing.Printing.PrinterResolution);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PageSettings;false;set_PrinterSettings;(System.Drawing.Printing.PrinterSettings);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PaperSize;false;PaperSize;(System.String,System.Int32,System.Int32);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PaperSize;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PaperSize;false;get_PaperName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PaperSize;false;set_PaperName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PaperSource;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PaperSource;false;get_SourceName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PaperSource;false;set_SourceName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PreviewPageInfo;false;PreviewPageInfo;(System.Drawing.Image,System.Drawing.Size);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PreviewPageInfo;false;PreviewPageInfo;(System.Drawing.Image,System.Drawing.Size);;Argument[1];Argument[this];taint;df-generated | +| System.Drawing.Printing;PreviewPageInfo;false;get_Image;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PreviewPageInfo;false;get_PhysicalSize;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PreviewPrintController;false;GetPreviewPageInfo;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintDocument;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintDocument;false;add_BeginPrint;(System.Drawing.Printing.PrintEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;add_EndPrint;(System.Drawing.Printing.PrintEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;add_PrintPage;(System.Drawing.Printing.PrintPageEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;add_QueryPageSettings;(System.Drawing.Printing.QueryPageSettingsEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;get_DefaultPageSettings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintDocument;false;get_DocumentName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintDocument;false;get_PrintController;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintDocument;false;get_PrinterSettings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintDocument;false;remove_BeginPrint;(System.Drawing.Printing.PrintEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;remove_EndPrint;(System.Drawing.Printing.PrintEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;remove_PrintPage;(System.Drawing.Printing.PrintPageEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;remove_QueryPageSettings;(System.Drawing.Printing.QueryPageSettingsEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;set_DefaultPageSettings;(System.Drawing.Printing.PageSettings);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrintDocument;false;set_DocumentName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrintDocument;false;set_PrintController;(System.Drawing.Printing.PrintController);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrintDocument;false;set_PrinterSettings;(System.Drawing.Printing.PrinterSettings);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrintEventHandler;false;BeginInvoke;(System.Object,System.Drawing.Printing.PrintEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintPageEventArgs;false;PrintPageEventArgs;(System.Drawing.Graphics,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.Printing.PageSettings);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;false;PrintPageEventArgs;(System.Drawing.Graphics,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.Printing.PageSettings);;Argument[1];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;false;PrintPageEventArgs;(System.Drawing.Graphics,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.Printing.PageSettings);;Argument[2];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;false;PrintPageEventArgs;(System.Drawing.Graphics,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.Printing.PageSettings);;Argument[3];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;false;get_Graphics;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;false;get_MarginBounds;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;false;get_PageBounds;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;false;get_PageSettings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintPageEventHandler;false;BeginInvoke;(System.Object,System.Drawing.Printing.PrintPageEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;false;Add;(System.Drawing.Printing.PaperSize);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;false;GetEnumerator;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;false;PaperSizeCollection;(System.Drawing.Printing.PaperSize[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;false;Add;(System.Drawing.Printing.PaperSource);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;false;GetEnumerator;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;false;PaperSourceCollection;(System.Drawing.Printing.PaperSource[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;false;Add;(System.Drawing.Printing.PrinterResolution);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;false;GetEnumerator;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;false;PrinterResolutionCollection;(System.Drawing.Printing.PrinterResolution[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;false;Add;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Drawing.Printing;PrinterSettings+StringCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Drawing.Printing;PrinterSettings+StringCollection;false;GetEnumerator;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;false;StringCollection;(System.String[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | +| System.Drawing.Printing;PrinterSettings;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings;false;get_DefaultPageSettings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings;false;get_PaperSizes;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings;false;get_PaperSources;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings;false;get_PrintFileName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings;false;get_PrinterName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings;false;get_PrinterResolutions;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings;false;set_PrintFileName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrinterSettings;false;set_PrinterName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;QueryPageSettingsEventArgs;false;QueryPageSettingsEventArgs;(System.Drawing.Printing.PageSettings);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;QueryPageSettingsEventArgs;false;get_PageSettings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;QueryPageSettingsEventArgs;false;set_PageSettings;(System.Drawing.Printing.PageSettings);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;QueryPageSettingsEventHandler;false;BeginInvoke;(System.Object,System.Drawing.Printing.QueryPageSettingsEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;StandardPrintController;false;OnStartPage;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintPageEventArgs);;Argument[1];ReturnValue;taint;df-generated | +| System.Drawing;Bitmap;false;Bitmap;(System.String,System.Boolean);;Argument[0];Argument[this];taint;df-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;df-generated | +| System.Drawing;Brush;false;SetNativeBrush;(System.IntPtr);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing;BufferedGraphics;false;get_Graphics;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;BufferedGraphicsContext;false;Allocate;(System.Drawing.Graphics,System.Drawing.Rectangle);;Argument[0];ReturnValue;taint;df-generated | +| System.Drawing;BufferedGraphicsContext;false;Allocate;(System.Drawing.Graphics,System.Drawing.Rectangle);;Argument[1];ReturnValue;taint;df-generated | +| System.Drawing;BufferedGraphicsContext;false;Allocate;(System.IntPtr,System.Drawing.Rectangle);;Argument[0];ReturnValue;taint;df-generated | +| System.Drawing;BufferedGraphicsContext;false;Allocate;(System.IntPtr,System.Drawing.Rectangle);;Argument[1];ReturnValue;taint;df-generated | +| System.Drawing;BufferedGraphicsContext;false;get_MaximumBuffer;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;BufferedGraphicsContext;false;set_MaximumBuffer;(System.Drawing.Size);;Argument[0];Argument[this];taint;df-generated | | System.Drawing;Color;false;FromName;(System.String);;Argument[0];ReturnValue;taint;df-generated | | System.Drawing;Color;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | | System.Drawing;Color;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | @@ -4740,6 +7036,87 @@ summary | System.Drawing;ColorConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | | System.Drawing;ColorTranslator;false;FromHtml;(System.String);;Argument[0];ReturnValue;taint;df-generated | | System.Drawing;ColorTranslator;false;ToHtml;(System.Drawing.Color);;Argument[0];ReturnValue;taint;df-generated | +| System.Drawing;Font;false;Clone;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Font;false;Font;(System.Drawing.Font,System.Drawing.FontStyle);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing;Font;false;Font;(System.Drawing.FontFamily,System.Single,System.Drawing.FontStyle,System.Drawing.GraphicsUnit,System.Byte,System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing;Font;false;Font;(System.String,System.Single,System.Drawing.FontStyle,System.Drawing.GraphicsUnit,System.Byte,System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing;Font;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | +| System.Drawing;Font;false;ToHfont;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Font;false;get_FontFamily;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Font;false;get_OriginalFontName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Font;false;get_SystemFontName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;FontConverter+FontNameConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;df-generated | +| System.Drawing;FontConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | +| System.Drawing;Graphics+DrawImageAbort;false;BeginInvoke;(System.IntPtr,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics+EnumerateMetafileProc;false;BeginInvoke;(System.Drawing.Imaging.EmfPlusRecordType,System.Int32,System.Int32,System.IntPtr,System.Drawing.Imaging.PlayRecordCallback,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics+EnumerateMetafileProc;false;BeginInvoke;(System.Drawing.Imaging.EmfPlusRecordType,System.Int32,System.Int32,System.IntPtr,System.Drawing.Imaging.PlayRecordCallback,System.AsyncCallback,System.Object);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics+EnumerateMetafileProc;false;Invoke;(System.Drawing.Imaging.EmfPlusRecordType,System.Int32,System.Int32,System.IntPtr,System.Drawing.Imaging.PlayRecordCallback);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort,System.Int32);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort,System.Int32);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort,System.IntPtr);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Single,System.Single,System.Single,System.Single,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Single,System.Single,System.Single,System.Single,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort,System.IntPtr);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;FromImage;(System.Drawing.Image);;Argument[0];ReturnValue;taint;df-generated | +| System.Drawing;Graphics;false;GetHdc;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Icon;false;Clone;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Icon;false;FromHandle;(System.IntPtr);;Argument[0];ReturnValue;taint;df-generated | +| System.Drawing;Icon;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | +| System.Drawing;Icon;false;Icon;(System.Drawing.Icon,System.Drawing.Size);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing;Icon;false;Icon;(System.Drawing.Icon,System.Drawing.Size);;Argument[1];Argument[this];taint;df-generated | +| System.Drawing;Icon;false;get_Handle;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Icon;false;get_Size;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Image+GetThumbnailImageAbort;false;BeginInvoke;(System.AsyncCallback,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Image;false;FromFile;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.Drawing;Image;false;FromFile;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;df-generated | +| System.Drawing;Image;false;GetThumbnailImage;(System.Int32,System.Int32,System.Drawing.Image+GetThumbnailImageAbort,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Image;false;get_Tag;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Image;false;set_Tag;(System.Object);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing;ImageAnimator;false;Animate;(System.Drawing.Image,System.EventHandler);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Drawing;ImageAnimator;false;StopAnimate;(System.Drawing.Image,System.EventHandler);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Drawing;ImageFormatConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | +| System.Drawing;Pen;false;Pen;(System.Drawing.Color,System.Single);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing;Pen;false;get_Color;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Pen;false;get_CustomEndCap;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Pen;false;set_Color;(System.Drawing.Color);;Argument[0];Argument[this];taint;df-generated | | System.Drawing;PointConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;df-generated | | System.Drawing;PointConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | | System.Drawing;Rectangle;false;Inflate;(System.Drawing.Rectangle,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;df-generated | @@ -4750,6 +7127,14 @@ summary | System.Drawing;SizeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | | System.Drawing;SizeFConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;df-generated | | System.Drawing;SizeFConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | +| System.Drawing;SolidBrush;false;SolidBrush;(System.Drawing.Color);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing;SolidBrush;false;get_Color;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;SolidBrush;false;set_Color;(System.Drawing.Color);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing;ToolboxBitmapAttribute;false;GetImage;(System.Object);;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;ToolboxBitmapAttribute;false;GetImage;(System.Object,System.Boolean);;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;ToolboxBitmapAttribute;false;GetImage;(System.Type);;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;ToolboxBitmapAttribute;false;GetImage;(System.Type,System.Boolean);;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;ToolboxBitmapAttribute;false;GetImage;(System.Type,System.String,System.Boolean);;Argument[this];ReturnValue;taint;df-generated | | System.Dynamic;BindingRestrictions;false;GetExpressionRestriction;(System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;df-generated | | System.Dynamic;BindingRestrictions;false;GetInstanceRestriction;(System.Linq.Expressions.Expression,System.Object);;Argument[0];ReturnValue;taint;df-generated | | System.Dynamic;BindingRestrictions;false;GetInstanceRestriction;(System.Linq.Expressions.Expression,System.Object);;Argument[1];ReturnValue;taint;df-generated | @@ -22175,6 +24560,846 @@ neutral | System.Diagnostics;XmlWriterTraceListener;XmlWriterTraceListener;(System.IO.TextWriter,System.String);summary;df-generated | | System.Diagnostics;XmlWriterTraceListener;XmlWriterTraceListener;(System.String);summary;df-generated | | System.Diagnostics;XmlWriterTraceListener;XmlWriterTraceListener;(System.String,System.String);summary;df-generated | +| System.Drawing.Design;CategoryNameCollection;Contains;(System.String);summary;df-generated | +| System.Drawing.Design;CategoryNameCollection;IndexOf;(System.String);summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;AdjustableArrowCap;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;AdjustableArrowCap;(System.Single,System.Single,System.Boolean);summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;get_Filled;();summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;get_Height;();summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;get_MiddleInset;();summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;get_Width;();summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;set_Filled;(System.Boolean);summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;set_Height;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;set_MiddleInset;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;set_Width;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;Blend;Blend;();summary;df-generated | +| System.Drawing.Drawing2D;Blend;Blend;(System.Int32);summary;df-generated | +| System.Drawing.Drawing2D;Blend;get_Factors;();summary;df-generated | +| System.Drawing.Drawing2D;Blend;get_Positions;();summary;df-generated | +| System.Drawing.Drawing2D;Blend;set_Factors;(System.Single[]);summary;df-generated | +| System.Drawing.Drawing2D;Blend;set_Positions;(System.Single[]);summary;df-generated | +| System.Drawing.Drawing2D;ColorBlend;ColorBlend;();summary;df-generated | +| System.Drawing.Drawing2D;ColorBlend;ColorBlend;(System.Int32);summary;df-generated | +| System.Drawing.Drawing2D;ColorBlend;get_Colors;();summary;df-generated | +| System.Drawing.Drawing2D;ColorBlend;get_Positions;();summary;df-generated | +| System.Drawing.Drawing2D;ColorBlend;set_Colors;(System.Drawing.Color[]);summary;df-generated | +| System.Drawing.Drawing2D;ColorBlend;set_Positions;(System.Single[]);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;Clone;();summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;CustomLineCap;(System.Drawing.Drawing2D.GraphicsPath,System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;CustomLineCap;(System.Drawing.Drawing2D.GraphicsPath,System.Drawing.Drawing2D.GraphicsPath,System.Drawing.Drawing2D.LineCap);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;CustomLineCap;(System.Drawing.Drawing2D.GraphicsPath,System.Drawing.Drawing2D.GraphicsPath,System.Drawing.Drawing2D.LineCap,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;Dispose;();summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;Dispose;(System.Boolean);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;GetStrokeCaps;(System.Drawing.Drawing2D.LineCap,System.Drawing.Drawing2D.LineCap);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;SetStrokeCaps;(System.Drawing.Drawing2D.LineCap,System.Drawing.Drawing2D.LineCap);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;get_BaseCap;();summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;get_BaseInset;();summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;get_StrokeJoin;();summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;get_WidthScale;();summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;set_BaseCap;(System.Drawing.Drawing2D.LineCap);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;set_BaseInset;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;set_StrokeJoin;(System.Drawing.Drawing2D.LineJoin);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;set_WidthScale;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddArc;(System.Drawing.Rectangle,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddArc;(System.Drawing.RectangleF,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddArc;(System.Int32,System.Int32,System.Int32,System.Int32,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddArc;(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddBezier;(System.Drawing.Point,System.Drawing.Point,System.Drawing.Point,System.Drawing.Point);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddBezier;(System.Drawing.PointF,System.Drawing.PointF,System.Drawing.PointF,System.Drawing.PointF);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddBezier;(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddBezier;(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddBeziers;(System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddBeziers;(System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddClosedCurve;(System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddClosedCurve;(System.Drawing.PointF[],System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddClosedCurve;(System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddClosedCurve;(System.Drawing.Point[],System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddCurve;(System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddCurve;(System.Drawing.PointF[],System.Int32,System.Int32,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddCurve;(System.Drawing.PointF[],System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddCurve;(System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddCurve;(System.Drawing.Point[],System.Int32,System.Int32,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddCurve;(System.Drawing.Point[],System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddEllipse;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddEllipse;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddEllipse;(System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddEllipse;(System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddLine;(System.Drawing.Point,System.Drawing.Point);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddLine;(System.Drawing.PointF,System.Drawing.PointF);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddLine;(System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddLine;(System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddLines;(System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddLines;(System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddPath;(System.Drawing.Drawing2D.GraphicsPath,System.Boolean);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddPie;(System.Drawing.Rectangle,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddPie;(System.Int32,System.Int32,System.Int32,System.Int32,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddPie;(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddPolygon;(System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddPolygon;(System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddRectangle;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddRectangle;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddRectangles;(System.Drawing.RectangleF[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddRectangles;(System.Drawing.Rectangle[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddString;(System.String,System.Drawing.FontFamily,System.Int32,System.Single,System.Drawing.Point,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddString;(System.String,System.Drawing.FontFamily,System.Int32,System.Single,System.Drawing.PointF,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddString;(System.String,System.Drawing.FontFamily,System.Int32,System.Single,System.Drawing.Rectangle,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddString;(System.String,System.Drawing.FontFamily,System.Int32,System.Single,System.Drawing.RectangleF,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;ClearMarkers;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Clone;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;CloseAllFigures;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;CloseFigure;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Dispose;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Flatten;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Flatten;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Flatten;(System.Drawing.Drawing2D.Matrix,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;GetBounds;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;GetBounds;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;GetBounds;(System.Drawing.Drawing2D.Matrix,System.Drawing.Pen);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;GetLastPoint;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;GraphicsPath;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;GraphicsPath;(System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;GraphicsPath;(System.Drawing.PointF[],System.Byte[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;GraphicsPath;(System.Drawing.PointF[],System.Byte[],System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;GraphicsPath;(System.Drawing.Point[],System.Byte[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;GraphicsPath;(System.Drawing.Point[],System.Byte[],System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsOutlineVisible;(System.Drawing.Point,System.Drawing.Pen);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsOutlineVisible;(System.Drawing.Point,System.Drawing.Pen,System.Drawing.Graphics);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsOutlineVisible;(System.Drawing.PointF,System.Drawing.Pen);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsOutlineVisible;(System.Drawing.PointF,System.Drawing.Pen,System.Drawing.Graphics);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsOutlineVisible;(System.Int32,System.Int32,System.Drawing.Pen);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsOutlineVisible;(System.Int32,System.Int32,System.Drawing.Pen,System.Drawing.Graphics);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsOutlineVisible;(System.Single,System.Single,System.Drawing.Pen);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsOutlineVisible;(System.Single,System.Single,System.Drawing.Pen,System.Drawing.Graphics);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsVisible;(System.Drawing.Point);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsVisible;(System.Drawing.Point,System.Drawing.Graphics);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsVisible;(System.Drawing.PointF);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsVisible;(System.Drawing.PointF,System.Drawing.Graphics);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsVisible;(System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsVisible;(System.Int32,System.Int32,System.Drawing.Graphics);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsVisible;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsVisible;(System.Single,System.Single,System.Drawing.Graphics);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Reset;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Reverse;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;SetMarkers;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;StartFigure;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Transform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Warp;(System.Drawing.PointF[],System.Drawing.RectangleF);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Warp;(System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Warp;(System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.Drawing2D.Matrix,System.Drawing.Drawing2D.WarpMode);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Warp;(System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.Drawing2D.Matrix,System.Drawing.Drawing2D.WarpMode,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Widen;(System.Drawing.Pen);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Widen;(System.Drawing.Pen,System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Widen;(System.Drawing.Pen,System.Drawing.Drawing2D.Matrix,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;get_FillMode;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;get_PathData;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;get_PathPoints;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;get_PathTypes;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;get_PointCount;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;set_FillMode;(System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;CopyData;(System.Drawing.PointF[],System.Byte[],System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;Dispose;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;Enumerate;(System.Drawing.PointF[],System.Byte[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;GraphicsPathIterator;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;HasCurve;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;NextMarker;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;NextMarker;(System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;NextPathType;(System.Byte,System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;NextSubpath;(System.Drawing.Drawing2D.GraphicsPath,System.Boolean);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;NextSubpath;(System.Int32,System.Int32,System.Boolean);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;Rewind;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;get_Count;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;get_SubpathCount;();summary;df-generated | +| System.Drawing.Drawing2D;HatchBrush;Clone;();summary;df-generated | +| System.Drawing.Drawing2D;HatchBrush;HatchBrush;(System.Drawing.Drawing2D.HatchStyle,System.Drawing.Color);summary;df-generated | +| System.Drawing.Drawing2D;HatchBrush;HatchBrush;(System.Drawing.Drawing2D.HatchStyle,System.Drawing.Color,System.Drawing.Color);summary;df-generated | +| System.Drawing.Drawing2D;HatchBrush;get_BackgroundColor;();summary;df-generated | +| System.Drawing.Drawing2D;HatchBrush;get_ForegroundColor;();summary;df-generated | +| System.Drawing.Drawing2D;HatchBrush;get_HatchStyle;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;Clone;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;LinearGradientBrush;(System.Drawing.Point,System.Drawing.Point,System.Drawing.Color,System.Drawing.Color);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;LinearGradientBrush;(System.Drawing.PointF,System.Drawing.PointF,System.Drawing.Color,System.Drawing.Color);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;LinearGradientBrush;(System.Drawing.Rectangle,System.Drawing.Color,System.Drawing.Color,System.Drawing.Drawing2D.LinearGradientMode);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;LinearGradientBrush;(System.Drawing.Rectangle,System.Drawing.Color,System.Drawing.Color,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;LinearGradientBrush;(System.Drawing.Rectangle,System.Drawing.Color,System.Drawing.Color,System.Single,System.Boolean);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;LinearGradientBrush;(System.Drawing.RectangleF,System.Drawing.Color,System.Drawing.Color,System.Drawing.Drawing2D.LinearGradientMode);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;LinearGradientBrush;(System.Drawing.RectangleF,System.Drawing.Color,System.Drawing.Color,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;LinearGradientBrush;(System.Drawing.RectangleF,System.Drawing.Color,System.Drawing.Color,System.Single,System.Boolean);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;MultiplyTransform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;MultiplyTransform;(System.Drawing.Drawing2D.Matrix,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;ResetTransform;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;RotateTransform;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;RotateTransform;(System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;ScaleTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;ScaleTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;SetBlendTriangularShape;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;SetBlendTriangularShape;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;SetSigmaBellShape;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;SetSigmaBellShape;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;TranslateTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;TranslateTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;get_Blend;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;get_GammaCorrection;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;get_InterpolationColors;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;get_LinearColors;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;get_Rectangle;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;get_Transform;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;get_WrapMode;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;set_Blend;(System.Drawing.Drawing2D.Blend);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;set_GammaCorrection;(System.Boolean);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;set_InterpolationColors;(System.Drawing.Drawing2D.ColorBlend);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;set_LinearColors;(System.Drawing.Color[]);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;set_Transform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;set_WrapMode;(System.Drawing.Drawing2D.WrapMode);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Clone;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Dispose;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Equals;(System.Object);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;GetHashCode;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Invert;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Matrix;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Matrix;(System.Drawing.Rectangle,System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Matrix;(System.Drawing.RectangleF,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Matrix;(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Multiply;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Multiply;(System.Drawing.Drawing2D.Matrix,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Reset;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Rotate;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Rotate;(System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;RotateAt;(System.Single,System.Drawing.PointF);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;RotateAt;(System.Single,System.Drawing.PointF,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Scale;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Scale;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Shear;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Shear;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;TransformPoints;(System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;TransformPoints;(System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;TransformVectors;(System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;TransformVectors;(System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Translate;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Translate;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;VectorTransformPoints;(System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;get_Elements;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;get_IsIdentity;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;get_IsInvertible;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;get_OffsetX;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;get_OffsetY;();summary;df-generated | +| System.Drawing.Drawing2D;PathData;PathData;();summary;df-generated | +| System.Drawing.Drawing2D;PathData;get_Points;();summary;df-generated | +| System.Drawing.Drawing2D;PathData;get_Types;();summary;df-generated | +| System.Drawing.Drawing2D;PathData;set_Points;(System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;PathData;set_Types;(System.Byte[]);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;Clone;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;MultiplyTransform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;MultiplyTransform;(System.Drawing.Drawing2D.Matrix,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;PathGradientBrush;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;PathGradientBrush;(System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;PathGradientBrush;(System.Drawing.PointF[],System.Drawing.Drawing2D.WrapMode);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;PathGradientBrush;(System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;PathGradientBrush;(System.Drawing.Point[],System.Drawing.Drawing2D.WrapMode);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;ResetTransform;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;RotateTransform;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;RotateTransform;(System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;ScaleTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;ScaleTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;SetBlendTriangularShape;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;SetBlendTriangularShape;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;SetSigmaBellShape;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;SetSigmaBellShape;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;TranslateTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;TranslateTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;get_Blend;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;get_CenterColor;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;get_CenterPoint;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;get_FocusScales;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;get_InterpolationColors;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;get_Rectangle;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;get_SurroundColors;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;get_Transform;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;get_WrapMode;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;set_Blend;(System.Drawing.Drawing2D.Blend);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;set_CenterColor;(System.Drawing.Color);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;set_CenterPoint;(System.Drawing.PointF);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;set_FocusScales;(System.Drawing.PointF);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;set_InterpolationColors;(System.Drawing.Drawing2D.ColorBlend);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;set_SurroundColors;(System.Drawing.Color[]);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;set_Transform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;set_WrapMode;(System.Drawing.Drawing2D.WrapMode);summary;df-generated | +| System.Drawing.Drawing2D;RegionData;get_Data;();summary;df-generated | +| System.Drawing.Drawing2D;RegionData;set_Data;(System.Byte[]);summary;df-generated | +| System.Drawing.Imaging;BitmapData;get_Height;();summary;df-generated | +| System.Drawing.Imaging;BitmapData;get_PixelFormat;();summary;df-generated | +| System.Drawing.Imaging;BitmapData;get_Reserved;();summary;df-generated | +| System.Drawing.Imaging;BitmapData;get_Stride;();summary;df-generated | +| System.Drawing.Imaging;BitmapData;get_Width;();summary;df-generated | +| System.Drawing.Imaging;BitmapData;set_Height;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;BitmapData;set_PixelFormat;(System.Drawing.Imaging.PixelFormat);summary;df-generated | +| System.Drawing.Imaging;BitmapData;set_Reserved;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;BitmapData;set_Stride;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;BitmapData;set_Width;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;ColorMap;ColorMap;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;ColorMatrix;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;ColorMatrix;(System.Single[][]);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Item;(System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix00;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix01;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix02;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix03;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix04;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix10;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix11;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix12;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix13;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix14;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix20;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix21;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix22;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix23;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix24;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix30;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix31;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix32;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix33;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix34;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix40;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix41;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix42;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix43;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix44;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Item;(System.Int32,System.Int32,System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix00;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix01;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix02;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix03;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix04;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix10;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix11;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix12;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix13;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix14;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix20;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix21;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix22;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix23;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix24;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix30;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix31;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix32;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix33;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix34;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix40;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix41;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix42;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix43;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix44;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorPalette;get_Flags;();summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;Dispose;();summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;get_NumberOfValues;();summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;get_Type;();summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;get_ValueType;();summary;df-generated | +| System.Drawing.Imaging;EncoderParameters;Dispose;();summary;df-generated | +| System.Drawing.Imaging;EncoderParameters;EncoderParameters;();summary;df-generated | +| System.Drawing.Imaging;EncoderParameters;EncoderParameters;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;FrameDimension;Equals;(System.Object);summary;df-generated | +| System.Drawing.Imaging;FrameDimension;GetHashCode;();summary;df-generated | +| System.Drawing.Imaging;FrameDimension;get_Page;();summary;df-generated | +| System.Drawing.Imaging;FrameDimension;get_Resolution;();summary;df-generated | +| System.Drawing.Imaging;FrameDimension;get_Time;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearBrushRemapTable;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearColorKey;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearColorKey;(System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearColorMatrix;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearColorMatrix;(System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearGamma;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearGamma;(System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearNoOp;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearNoOp;(System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearOutputChannel;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearOutputChannel;(System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearOutputChannelColorProfile;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearOutputChannelColorProfile;(System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearRemapTable;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearRemapTable;(System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearThreshold;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearThreshold;(System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;Clone;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;Dispose;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;GetAdjustedPalette;(System.Drawing.Imaging.ColorPalette,System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ImageAttributes;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetBrushRemapTable;(System.Drawing.Imaging.ColorMap[]);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetColorKey;(System.Drawing.Color,System.Drawing.Color);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetColorKey;(System.Drawing.Color,System.Drawing.Color,System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetColorMatrices;(System.Drawing.Imaging.ColorMatrix,System.Drawing.Imaging.ColorMatrix);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetColorMatrices;(System.Drawing.Imaging.ColorMatrix,System.Drawing.Imaging.ColorMatrix,System.Drawing.Imaging.ColorMatrixFlag);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetColorMatrices;(System.Drawing.Imaging.ColorMatrix,System.Drawing.Imaging.ColorMatrix,System.Drawing.Imaging.ColorMatrixFlag,System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetColorMatrix;(System.Drawing.Imaging.ColorMatrix);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetColorMatrix;(System.Drawing.Imaging.ColorMatrix,System.Drawing.Imaging.ColorMatrixFlag);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetColorMatrix;(System.Drawing.Imaging.ColorMatrix,System.Drawing.Imaging.ColorMatrixFlag,System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetGamma;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetGamma;(System.Single,System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetNoOp;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetNoOp;(System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetOutputChannel;(System.Drawing.Imaging.ColorChannelFlag);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetOutputChannel;(System.Drawing.Imaging.ColorChannelFlag,System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetOutputChannelColorProfile;(System.String);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetOutputChannelColorProfile;(System.String,System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetRemapTable;(System.Drawing.Imaging.ColorMap[]);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetRemapTable;(System.Drawing.Imaging.ColorMap[],System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetThreshold;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetThreshold;(System.Single,System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetWrapMode;(System.Drawing.Drawing2D.WrapMode);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetWrapMode;(System.Drawing.Drawing2D.WrapMode,System.Drawing.Color);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetWrapMode;(System.Drawing.Drawing2D.WrapMode,System.Drawing.Color,System.Boolean);summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;GetImageDecoders;();summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;GetImageEncoders;();summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;get_Flags;();summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;get_Version;();summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;set_Flags;(System.Drawing.Imaging.ImageCodecFlags);summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;set_Version;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;ImageFormat;Equals;(System.Object);summary;df-generated | +| System.Drawing.Imaging;ImageFormat;GetHashCode;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_Bmp;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_Emf;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_Exif;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_Gif;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_Icon;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_Jpeg;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_MemoryBmp;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_Png;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_Tiff;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_Wmf;();summary;df-generated | +| System.Drawing.Imaging;MetaHeader;MetaHeader;();summary;df-generated | +| System.Drawing.Imaging;MetaHeader;get_HeaderSize;();summary;df-generated | +| System.Drawing.Imaging;MetaHeader;get_MaxRecord;();summary;df-generated | +| System.Drawing.Imaging;MetaHeader;get_NoObjects;();summary;df-generated | +| System.Drawing.Imaging;MetaHeader;get_NoParameters;();summary;df-generated | +| System.Drawing.Imaging;MetaHeader;get_Size;();summary;df-generated | +| System.Drawing.Imaging;MetaHeader;get_Type;();summary;df-generated | +| System.Drawing.Imaging;MetaHeader;get_Version;();summary;df-generated | +| System.Drawing.Imaging;MetaHeader;set_HeaderSize;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;MetaHeader;set_MaxRecord;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;MetaHeader;set_NoObjects;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;MetaHeader;set_NoParameters;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;MetaHeader;set_Size;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;MetaHeader;set_Type;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;MetaHeader;set_Version;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;Metafile;GetMetafileHeader;();summary;df-generated | +| System.Drawing.Imaging;Metafile;GetMetafileHeader;(System.IO.Stream);summary;df-generated | +| System.Drawing.Imaging;Metafile;GetMetafileHeader;(System.IntPtr);summary;df-generated | +| System.Drawing.Imaging;Metafile;GetMetafileHeader;(System.IntPtr,System.Drawing.Imaging.WmfPlaceableFileHeader);summary;df-generated | +| System.Drawing.Imaging;Metafile;GetMetafileHeader;(System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.Imaging.EmfType);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.Imaging.EmfType,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Boolean);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.Imaging.EmfType);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.Imaging.EmfType,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.Imaging.WmfPlaceableFileHeader);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.Imaging.WmfPlaceableFileHeader,System.Boolean);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.Imaging.EmfType);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.Imaging.EmfType,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;PlayRecord;(System.Drawing.Imaging.EmfPlusRecordType,System.Int32,System.Int32,System.Byte[]);summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;IsDisplay;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;IsEmf;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;IsEmfOrEmfPlus;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;IsEmfPlus;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;IsEmfPlusDual;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;IsEmfPlusOnly;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;IsWmf;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;IsWmfPlaceable;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_Bounds;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_DpiX;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_DpiY;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_EmfPlusHeaderSize;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_LogicalDpiX;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_LogicalDpiY;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_MetafileSize;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_Type;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_Version;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_WmfHeader;();summary;df-generated | +| System.Drawing.Imaging;PropertyItem;get_Id;();summary;df-generated | +| System.Drawing.Imaging;PropertyItem;get_Len;();summary;df-generated | +| System.Drawing.Imaging;PropertyItem;get_Type;();summary;df-generated | +| System.Drawing.Imaging;PropertyItem;get_Value;();summary;df-generated | +| System.Drawing.Imaging;PropertyItem;set_Id;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;PropertyItem;set_Len;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;PropertyItem;set_Type;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;PropertyItem;set_Value;(System.Byte[]);summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;get_BboxBottom;();summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;get_BboxLeft;();summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;get_BboxRight;();summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;get_BboxTop;();summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;get_Checksum;();summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;get_Hmf;();summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;get_Inch;();summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;get_Key;();summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;get_Reserved;();summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;set_BboxBottom;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;set_BboxLeft;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;set_BboxRight;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;set_BboxTop;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;set_Checksum;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;set_Hmf;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;set_Inch;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;set_Key;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;set_Reserved;(System.Int32);summary;df-generated | +| System.Drawing.Printing;InvalidPrinterException;InvalidPrinterException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Drawing.Printing;Margins;Clone;();summary;df-generated | +| System.Drawing.Printing;Margins;Equals;(System.Object);summary;df-generated | +| System.Drawing.Printing;Margins;GetHashCode;();summary;df-generated | +| System.Drawing.Printing;Margins;Margins;();summary;df-generated | +| System.Drawing.Printing;Margins;Margins;(System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Printing;Margins;ToString;();summary;df-generated | +| System.Drawing.Printing;Margins;get_Bottom;();summary;df-generated | +| System.Drawing.Printing;Margins;get_Left;();summary;df-generated | +| System.Drawing.Printing;Margins;get_Right;();summary;df-generated | +| System.Drawing.Printing;Margins;get_Top;();summary;df-generated | +| System.Drawing.Printing;Margins;set_Bottom;(System.Int32);summary;df-generated | +| System.Drawing.Printing;Margins;set_Left;(System.Int32);summary;df-generated | +| System.Drawing.Printing;Margins;set_Right;(System.Int32);summary;df-generated | +| System.Drawing.Printing;Margins;set_Top;(System.Int32);summary;df-generated | +| System.Drawing.Printing;MarginsConverter;CanConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing.Printing;MarginsConverter;CanConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing.Printing;MarginsConverter;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);summary;df-generated | +| System.Drawing.Printing;MarginsConverter;CreateInstance;(System.ComponentModel.ITypeDescriptorContext,System.Collections.IDictionary);summary;df-generated | +| System.Drawing.Printing;MarginsConverter;GetCreateInstanceSupported;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing.Printing;PageSettings;CopyToHdevmode;(System.IntPtr);summary;df-generated | +| System.Drawing.Printing;PageSettings;PageSettings;();summary;df-generated | +| System.Drawing.Printing;PageSettings;SetHdevmode;(System.IntPtr);summary;df-generated | +| System.Drawing.Printing;PageSettings;get_Bounds;();summary;df-generated | +| System.Drawing.Printing;PageSettings;get_Color;();summary;df-generated | +| System.Drawing.Printing;PageSettings;get_HardMarginX;();summary;df-generated | +| System.Drawing.Printing;PageSettings;get_HardMarginY;();summary;df-generated | +| System.Drawing.Printing;PageSettings;get_Landscape;();summary;df-generated | +| System.Drawing.Printing;PageSettings;set_Color;(System.Boolean);summary;df-generated | +| System.Drawing.Printing;PageSettings;set_Landscape;(System.Boolean);summary;df-generated | +| System.Drawing.Printing;PaperSize;PaperSize;();summary;df-generated | +| System.Drawing.Printing;PaperSize;get_Height;();summary;df-generated | +| System.Drawing.Printing;PaperSize;get_Kind;();summary;df-generated | +| System.Drawing.Printing;PaperSize;get_RawKind;();summary;df-generated | +| System.Drawing.Printing;PaperSize;get_Width;();summary;df-generated | +| System.Drawing.Printing;PaperSize;set_Height;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PaperSize;set_RawKind;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PaperSize;set_Width;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PaperSource;PaperSource;();summary;df-generated | +| System.Drawing.Printing;PaperSource;get_Kind;();summary;df-generated | +| System.Drawing.Printing;PaperSource;get_RawKind;();summary;df-generated | +| System.Drawing.Printing;PaperSource;set_RawKind;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PreviewPrintController;OnEndPage;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintPageEventArgs);summary;df-generated | +| System.Drawing.Printing;PreviewPrintController;OnEndPrint;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintEventArgs);summary;df-generated | +| System.Drawing.Printing;PreviewPrintController;OnStartPage;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintPageEventArgs);summary;df-generated | +| System.Drawing.Printing;PreviewPrintController;OnStartPrint;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintEventArgs);summary;df-generated | +| System.Drawing.Printing;PreviewPrintController;get_IsPreview;();summary;df-generated | +| System.Drawing.Printing;PreviewPrintController;get_UseAntiAlias;();summary;df-generated | +| System.Drawing.Printing;PreviewPrintController;set_UseAntiAlias;(System.Boolean);summary;df-generated | +| System.Drawing.Printing;PrintController;OnEndPage;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintPageEventArgs);summary;df-generated | +| System.Drawing.Printing;PrintController;OnEndPrint;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintEventArgs);summary;df-generated | +| System.Drawing.Printing;PrintController;OnStartPage;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintPageEventArgs);summary;df-generated | +| System.Drawing.Printing;PrintController;OnStartPrint;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintEventArgs);summary;df-generated | +| System.Drawing.Printing;PrintController;PrintController;();summary;df-generated | +| System.Drawing.Printing;PrintController;get_IsPreview;();summary;df-generated | +| System.Drawing.Printing;PrintDocument;OnBeginPrint;(System.Drawing.Printing.PrintEventArgs);summary;df-generated | +| System.Drawing.Printing;PrintDocument;OnEndPrint;(System.Drawing.Printing.PrintEventArgs);summary;df-generated | +| System.Drawing.Printing;PrintDocument;OnPrintPage;(System.Drawing.Printing.PrintPageEventArgs);summary;df-generated | +| System.Drawing.Printing;PrintDocument;OnQueryPageSettings;(System.Drawing.Printing.QueryPageSettingsEventArgs);summary;df-generated | +| System.Drawing.Printing;PrintDocument;Print;();summary;df-generated | +| System.Drawing.Printing;PrintDocument;PrintDocument;();summary;df-generated | +| System.Drawing.Printing;PrintDocument;get_OriginAtMargins;();summary;df-generated | +| System.Drawing.Printing;PrintDocument;set_OriginAtMargins;(System.Boolean);summary;df-generated | +| System.Drawing.Printing;PrintEventArgs;PrintEventArgs;();summary;df-generated | +| System.Drawing.Printing;PrintEventArgs;get_PrintAction;();summary;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;get_Cancel;();summary;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;get_HasMorePages;();summary;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;set_Cancel;(System.Boolean);summary;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;set_HasMorePages;(System.Boolean);summary;df-generated | +| System.Drawing.Printing;PrinterResolution;PrinterResolution;();summary;df-generated | +| System.Drawing.Printing;PrinterResolution;ToString;();summary;df-generated | +| System.Drawing.Printing;PrinterResolution;get_Kind;();summary;df-generated | +| System.Drawing.Printing;PrinterResolution;get_X;();summary;df-generated | +| System.Drawing.Printing;PrinterResolution;get_Y;();summary;df-generated | +| System.Drawing.Printing;PrinterResolution;set_Kind;(System.Drawing.Printing.PrinterResolutionKind);summary;df-generated | +| System.Drawing.Printing;PrinterResolution;set_X;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterResolution;set_Y;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;CopyTo;(System.Drawing.Printing.PaperSize[],System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;get_Count;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;get_IsSynchronized;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;CopyTo;(System.Drawing.Printing.PaperSource[],System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;get_Count;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;get_IsSynchronized;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;CopyTo;(System.Drawing.Printing.PrinterResolution[],System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;get_Count;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;get_IsSynchronized;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;CopyTo;(System.String[],System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;get_Count;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;get_IsSynchronized;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;Clone;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;CreateMeasurementGraphics;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;CreateMeasurementGraphics;(System.Boolean);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;CreateMeasurementGraphics;(System.Drawing.Printing.PageSettings);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;CreateMeasurementGraphics;(System.Drawing.Printing.PageSettings,System.Boolean);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;GetHdevmode;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;GetHdevmode;(System.Drawing.Printing.PageSettings);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;GetHdevnames;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;IsDirectPrintingSupported;(System.Drawing.Image);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;IsDirectPrintingSupported;(System.Drawing.Imaging.ImageFormat);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;PrinterSettings;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;SetHdevmode;(System.IntPtr);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;SetHdevnames;(System.IntPtr);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_CanDuplex;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_Collate;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_Copies;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_Duplex;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_FromPage;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_InstalledPrinters;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_IsDefaultPrinter;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_IsPlotter;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_IsValid;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_LandscapeAngle;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_MaximumCopies;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_MaximumPage;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_MinimumPage;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_PrintRange;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_PrintToFile;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_SupportsColor;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_ToPage;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_Collate;(System.Boolean);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_Copies;(System.Int16);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_Duplex;(System.Drawing.Printing.Duplex);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_FromPage;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_MaximumPage;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_MinimumPage;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_PrintRange;(System.Drawing.Printing.PrintRange);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_PrintToFile;(System.Boolean);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_ToPage;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterUnitConvert;Convert;(System.Double,System.Drawing.Printing.PrinterUnit,System.Drawing.Printing.PrinterUnit);summary;df-generated | +| System.Drawing.Printing;PrinterUnitConvert;Convert;(System.Drawing.Point,System.Drawing.Printing.PrinterUnit,System.Drawing.Printing.PrinterUnit);summary;df-generated | +| System.Drawing.Printing;PrinterUnitConvert;Convert;(System.Drawing.Printing.Margins,System.Drawing.Printing.PrinterUnit,System.Drawing.Printing.PrinterUnit);summary;df-generated | +| System.Drawing.Printing;PrinterUnitConvert;Convert;(System.Drawing.Rectangle,System.Drawing.Printing.PrinterUnit,System.Drawing.Printing.PrinterUnit);summary;df-generated | +| System.Drawing.Printing;PrinterUnitConvert;Convert;(System.Drawing.Size,System.Drawing.Printing.PrinterUnit,System.Drawing.Printing.PrinterUnit);summary;df-generated | +| System.Drawing.Printing;PrinterUnitConvert;Convert;(System.Int32,System.Drawing.Printing.PrinterUnit,System.Drawing.Printing.PrinterUnit);summary;df-generated | +| System.Drawing.Printing;StandardPrintController;OnEndPage;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintPageEventArgs);summary;df-generated | +| System.Drawing.Printing;StandardPrintController;OnEndPrint;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintEventArgs);summary;df-generated | +| System.Drawing.Printing;StandardPrintController;OnStartPrint;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintEventArgs);summary;df-generated | +| System.Drawing.Printing;StandardPrintController;StandardPrintController;();summary;df-generated | +| System.Drawing.Text;FontCollection;Dispose;();summary;df-generated | +| System.Drawing.Text;FontCollection;Dispose;(System.Boolean);summary;df-generated | +| System.Drawing.Text;FontCollection;get_Families;();summary;df-generated | +| System.Drawing.Text;InstalledFontCollection;InstalledFontCollection;();summary;df-generated | +| System.Drawing.Text;PrivateFontCollection;AddFontFile;(System.String);summary;df-generated | +| System.Drawing.Text;PrivateFontCollection;AddMemoryFont;(System.IntPtr,System.Int32);summary;df-generated | +| System.Drawing.Text;PrivateFontCollection;Dispose;(System.Boolean);summary;df-generated | +| System.Drawing.Text;PrivateFontCollection;PrivateFontCollection;();summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.Drawing.Image);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.Drawing.Image,System.Drawing.Size);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.Drawing.Image,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.IO.Stream);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.IO.Stream,System.Boolean);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.Int32,System.Int32,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.Int32,System.Int32,System.Drawing.Imaging.PixelFormat);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.Int32,System.Int32,System.Int32,System.Drawing.Imaging.PixelFormat,System.IntPtr);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.String);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.Type,System.String);summary;df-generated | +| System.Drawing;Bitmap;Clone;(System.Drawing.Rectangle,System.Drawing.Imaging.PixelFormat);summary;df-generated | +| System.Drawing;Bitmap;Clone;(System.Drawing.RectangleF,System.Drawing.Imaging.PixelFormat);summary;df-generated | +| System.Drawing;Bitmap;FromHicon;(System.IntPtr);summary;df-generated | +| System.Drawing;Bitmap;FromResource;(System.IntPtr,System.String);summary;df-generated | +| System.Drawing;Bitmap;GetHbitmap;();summary;df-generated | +| System.Drawing;Bitmap;GetHbitmap;(System.Drawing.Color);summary;df-generated | +| System.Drawing;Bitmap;GetHicon;();summary;df-generated | +| System.Drawing;Bitmap;GetPixel;(System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Bitmap;LockBits;(System.Drawing.Rectangle,System.Drawing.Imaging.ImageLockMode,System.Drawing.Imaging.PixelFormat);summary;df-generated | +| System.Drawing;Bitmap;MakeTransparent;();summary;df-generated | +| System.Drawing;Bitmap;MakeTransparent;(System.Drawing.Color);summary;df-generated | +| System.Drawing;Bitmap;SetPixel;(System.Int32,System.Int32,System.Drawing.Color);summary;df-generated | +| System.Drawing;Bitmap;SetResolution;(System.Single,System.Single);summary;df-generated | +| System.Drawing;Bitmap;UnlockBits;(System.Drawing.Imaging.BitmapData);summary;df-generated | +| System.Drawing;Brush;Clone;();summary;df-generated | +| System.Drawing;Brush;Dispose;();summary;df-generated | +| System.Drawing;Brush;Dispose;(System.Boolean);summary;df-generated | +| System.Drawing;Brushes;get_AliceBlue;();summary;df-generated | +| System.Drawing;Brushes;get_AntiqueWhite;();summary;df-generated | +| System.Drawing;Brushes;get_Aqua;();summary;df-generated | +| System.Drawing;Brushes;get_Aquamarine;();summary;df-generated | +| System.Drawing;Brushes;get_Azure;();summary;df-generated | +| System.Drawing;Brushes;get_Beige;();summary;df-generated | +| System.Drawing;Brushes;get_Bisque;();summary;df-generated | +| System.Drawing;Brushes;get_Black;();summary;df-generated | +| System.Drawing;Brushes;get_BlanchedAlmond;();summary;df-generated | +| System.Drawing;Brushes;get_Blue;();summary;df-generated | +| System.Drawing;Brushes;get_BlueViolet;();summary;df-generated | +| System.Drawing;Brushes;get_Brown;();summary;df-generated | +| System.Drawing;Brushes;get_BurlyWood;();summary;df-generated | +| System.Drawing;Brushes;get_CadetBlue;();summary;df-generated | +| System.Drawing;Brushes;get_Chartreuse;();summary;df-generated | +| System.Drawing;Brushes;get_Chocolate;();summary;df-generated | +| System.Drawing;Brushes;get_Coral;();summary;df-generated | +| System.Drawing;Brushes;get_CornflowerBlue;();summary;df-generated | +| System.Drawing;Brushes;get_Cornsilk;();summary;df-generated | +| System.Drawing;Brushes;get_Crimson;();summary;df-generated | +| System.Drawing;Brushes;get_Cyan;();summary;df-generated | +| System.Drawing;Brushes;get_DarkBlue;();summary;df-generated | +| System.Drawing;Brushes;get_DarkCyan;();summary;df-generated | +| System.Drawing;Brushes;get_DarkGoldenrod;();summary;df-generated | +| System.Drawing;Brushes;get_DarkGray;();summary;df-generated | +| System.Drawing;Brushes;get_DarkGreen;();summary;df-generated | +| System.Drawing;Brushes;get_DarkKhaki;();summary;df-generated | +| System.Drawing;Brushes;get_DarkMagenta;();summary;df-generated | +| System.Drawing;Brushes;get_DarkOliveGreen;();summary;df-generated | +| System.Drawing;Brushes;get_DarkOrange;();summary;df-generated | +| System.Drawing;Brushes;get_DarkOrchid;();summary;df-generated | +| System.Drawing;Brushes;get_DarkRed;();summary;df-generated | +| System.Drawing;Brushes;get_DarkSalmon;();summary;df-generated | +| System.Drawing;Brushes;get_DarkSeaGreen;();summary;df-generated | +| System.Drawing;Brushes;get_DarkSlateBlue;();summary;df-generated | +| System.Drawing;Brushes;get_DarkSlateGray;();summary;df-generated | +| System.Drawing;Brushes;get_DarkTurquoise;();summary;df-generated | +| System.Drawing;Brushes;get_DarkViolet;();summary;df-generated | +| System.Drawing;Brushes;get_DeepPink;();summary;df-generated | +| System.Drawing;Brushes;get_DeepSkyBlue;();summary;df-generated | +| System.Drawing;Brushes;get_DimGray;();summary;df-generated | +| System.Drawing;Brushes;get_DodgerBlue;();summary;df-generated | +| System.Drawing;Brushes;get_Firebrick;();summary;df-generated | +| System.Drawing;Brushes;get_FloralWhite;();summary;df-generated | +| System.Drawing;Brushes;get_ForestGreen;();summary;df-generated | +| System.Drawing;Brushes;get_Fuchsia;();summary;df-generated | +| System.Drawing;Brushes;get_Gainsboro;();summary;df-generated | +| System.Drawing;Brushes;get_GhostWhite;();summary;df-generated | +| System.Drawing;Brushes;get_Gold;();summary;df-generated | +| System.Drawing;Brushes;get_Goldenrod;();summary;df-generated | +| System.Drawing;Brushes;get_Gray;();summary;df-generated | +| System.Drawing;Brushes;get_Green;();summary;df-generated | +| System.Drawing;Brushes;get_GreenYellow;();summary;df-generated | +| System.Drawing;Brushes;get_Honeydew;();summary;df-generated | +| System.Drawing;Brushes;get_HotPink;();summary;df-generated | +| System.Drawing;Brushes;get_IndianRed;();summary;df-generated | +| System.Drawing;Brushes;get_Indigo;();summary;df-generated | +| System.Drawing;Brushes;get_Ivory;();summary;df-generated | +| System.Drawing;Brushes;get_Khaki;();summary;df-generated | +| System.Drawing;Brushes;get_Lavender;();summary;df-generated | +| System.Drawing;Brushes;get_LavenderBlush;();summary;df-generated | +| System.Drawing;Brushes;get_LawnGreen;();summary;df-generated | +| System.Drawing;Brushes;get_LemonChiffon;();summary;df-generated | +| System.Drawing;Brushes;get_LightBlue;();summary;df-generated | +| System.Drawing;Brushes;get_LightCoral;();summary;df-generated | +| System.Drawing;Brushes;get_LightCyan;();summary;df-generated | +| System.Drawing;Brushes;get_LightGoldenrodYellow;();summary;df-generated | +| System.Drawing;Brushes;get_LightGray;();summary;df-generated | +| System.Drawing;Brushes;get_LightGreen;();summary;df-generated | +| System.Drawing;Brushes;get_LightPink;();summary;df-generated | +| System.Drawing;Brushes;get_LightSalmon;();summary;df-generated | +| System.Drawing;Brushes;get_LightSeaGreen;();summary;df-generated | +| System.Drawing;Brushes;get_LightSkyBlue;();summary;df-generated | +| System.Drawing;Brushes;get_LightSlateGray;();summary;df-generated | +| System.Drawing;Brushes;get_LightSteelBlue;();summary;df-generated | +| System.Drawing;Brushes;get_LightYellow;();summary;df-generated | +| System.Drawing;Brushes;get_Lime;();summary;df-generated | +| System.Drawing;Brushes;get_LimeGreen;();summary;df-generated | +| System.Drawing;Brushes;get_Linen;();summary;df-generated | +| System.Drawing;Brushes;get_Magenta;();summary;df-generated | +| System.Drawing;Brushes;get_Maroon;();summary;df-generated | +| System.Drawing;Brushes;get_MediumAquamarine;();summary;df-generated | +| System.Drawing;Brushes;get_MediumBlue;();summary;df-generated | +| System.Drawing;Brushes;get_MediumOrchid;();summary;df-generated | +| System.Drawing;Brushes;get_MediumPurple;();summary;df-generated | +| System.Drawing;Brushes;get_MediumSeaGreen;();summary;df-generated | +| System.Drawing;Brushes;get_MediumSlateBlue;();summary;df-generated | +| System.Drawing;Brushes;get_MediumSpringGreen;();summary;df-generated | +| System.Drawing;Brushes;get_MediumTurquoise;();summary;df-generated | +| System.Drawing;Brushes;get_MediumVioletRed;();summary;df-generated | +| System.Drawing;Brushes;get_MidnightBlue;();summary;df-generated | +| System.Drawing;Brushes;get_MintCream;();summary;df-generated | +| System.Drawing;Brushes;get_MistyRose;();summary;df-generated | +| System.Drawing;Brushes;get_Moccasin;();summary;df-generated | +| System.Drawing;Brushes;get_NavajoWhite;();summary;df-generated | +| System.Drawing;Brushes;get_Navy;();summary;df-generated | +| System.Drawing;Brushes;get_OldLace;();summary;df-generated | +| System.Drawing;Brushes;get_Olive;();summary;df-generated | +| System.Drawing;Brushes;get_OliveDrab;();summary;df-generated | +| System.Drawing;Brushes;get_Orange;();summary;df-generated | +| System.Drawing;Brushes;get_OrangeRed;();summary;df-generated | +| System.Drawing;Brushes;get_Orchid;();summary;df-generated | +| System.Drawing;Brushes;get_PaleGoldenrod;();summary;df-generated | +| System.Drawing;Brushes;get_PaleGreen;();summary;df-generated | +| System.Drawing;Brushes;get_PaleTurquoise;();summary;df-generated | +| System.Drawing;Brushes;get_PaleVioletRed;();summary;df-generated | +| System.Drawing;Brushes;get_PapayaWhip;();summary;df-generated | +| System.Drawing;Brushes;get_PeachPuff;();summary;df-generated | +| System.Drawing;Brushes;get_Peru;();summary;df-generated | +| System.Drawing;Brushes;get_Pink;();summary;df-generated | +| System.Drawing;Brushes;get_Plum;();summary;df-generated | +| System.Drawing;Brushes;get_PowderBlue;();summary;df-generated | +| System.Drawing;Brushes;get_Purple;();summary;df-generated | +| System.Drawing;Brushes;get_Red;();summary;df-generated | +| System.Drawing;Brushes;get_RosyBrown;();summary;df-generated | +| System.Drawing;Brushes;get_RoyalBlue;();summary;df-generated | +| System.Drawing;Brushes;get_SaddleBrown;();summary;df-generated | +| System.Drawing;Brushes;get_Salmon;();summary;df-generated | +| System.Drawing;Brushes;get_SandyBrown;();summary;df-generated | +| System.Drawing;Brushes;get_SeaGreen;();summary;df-generated | +| System.Drawing;Brushes;get_SeaShell;();summary;df-generated | +| System.Drawing;Brushes;get_Sienna;();summary;df-generated | +| System.Drawing;Brushes;get_Silver;();summary;df-generated | +| System.Drawing;Brushes;get_SkyBlue;();summary;df-generated | +| System.Drawing;Brushes;get_SlateBlue;();summary;df-generated | +| System.Drawing;Brushes;get_SlateGray;();summary;df-generated | +| System.Drawing;Brushes;get_Snow;();summary;df-generated | +| System.Drawing;Brushes;get_SpringGreen;();summary;df-generated | +| System.Drawing;Brushes;get_SteelBlue;();summary;df-generated | +| System.Drawing;Brushes;get_Tan;();summary;df-generated | +| System.Drawing;Brushes;get_Teal;();summary;df-generated | +| System.Drawing;Brushes;get_Thistle;();summary;df-generated | +| System.Drawing;Brushes;get_Tomato;();summary;df-generated | +| System.Drawing;Brushes;get_Transparent;();summary;df-generated | +| System.Drawing;Brushes;get_Turquoise;();summary;df-generated | +| System.Drawing;Brushes;get_Violet;();summary;df-generated | +| System.Drawing;Brushes;get_Wheat;();summary;df-generated | +| System.Drawing;Brushes;get_White;();summary;df-generated | +| System.Drawing;Brushes;get_WhiteSmoke;();summary;df-generated | +| System.Drawing;Brushes;get_Yellow;();summary;df-generated | +| System.Drawing;Brushes;get_YellowGreen;();summary;df-generated | +| System.Drawing;BufferedGraphics;Dispose;();summary;df-generated | +| System.Drawing;BufferedGraphics;Render;();summary;df-generated | +| System.Drawing;BufferedGraphics;Render;(System.Drawing.Graphics);summary;df-generated | +| System.Drawing;BufferedGraphics;Render;(System.IntPtr);summary;df-generated | +| System.Drawing;BufferedGraphicsContext;BufferedGraphicsContext;();summary;df-generated | +| System.Drawing;BufferedGraphicsContext;Dispose;();summary;df-generated | +| System.Drawing;BufferedGraphicsContext;Invalidate;();summary;df-generated | +| System.Drawing;BufferedGraphicsManager;get_Current;();summary;df-generated | +| System.Drawing;CharacterRange;CharacterRange;(System.Int32,System.Int32);summary;df-generated | +| System.Drawing;CharacterRange;Equals;(System.Object);summary;df-generated | +| System.Drawing;CharacterRange;GetHashCode;();summary;df-generated | +| System.Drawing;CharacterRange;get_First;();summary;df-generated | +| System.Drawing;CharacterRange;get_Length;();summary;df-generated | +| System.Drawing;CharacterRange;set_First;(System.Int32);summary;df-generated | +| System.Drawing;CharacterRange;set_Length;(System.Int32);summary;df-generated | | System.Drawing;Color;Equals;(System.Drawing.Color);summary;df-generated | | System.Drawing;Color;Equals;(System.Object);summary;df-generated | | System.Drawing;Color;FromArgb;(System.Int32);summary;df-generated | @@ -22347,6 +25572,542 @@ neutral | System.Drawing;ColorTranslator;FromWin32;(System.Int32);summary;df-generated | | System.Drawing;ColorTranslator;ToOle;(System.Drawing.Color);summary;df-generated | | System.Drawing;ColorTranslator;ToWin32;(System.Drawing.Color);summary;df-generated | +| System.Drawing;Font;Dispose;();summary;df-generated | +| System.Drawing;Font;Equals;(System.Object);summary;df-generated | +| System.Drawing;Font;Font;(System.Drawing.FontFamily,System.Single);summary;df-generated | +| System.Drawing;Font;Font;(System.Drawing.FontFamily,System.Single,System.Drawing.FontStyle);summary;df-generated | +| System.Drawing;Font;Font;(System.Drawing.FontFamily,System.Single,System.Drawing.FontStyle,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Font;Font;(System.Drawing.FontFamily,System.Single,System.Drawing.FontStyle,System.Drawing.GraphicsUnit,System.Byte);summary;df-generated | +| System.Drawing;Font;Font;(System.Drawing.FontFamily,System.Single,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Font;Font;(System.String,System.Single);summary;df-generated | +| System.Drawing;Font;Font;(System.String,System.Single,System.Drawing.FontStyle);summary;df-generated | +| System.Drawing;Font;Font;(System.String,System.Single,System.Drawing.FontStyle,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Font;Font;(System.String,System.Single,System.Drawing.FontStyle,System.Drawing.GraphicsUnit,System.Byte);summary;df-generated | +| System.Drawing;Font;Font;(System.String,System.Single,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Font;FromHdc;(System.IntPtr);summary;df-generated | +| System.Drawing;Font;FromHfont;(System.IntPtr);summary;df-generated | +| System.Drawing;Font;FromLogFont;(System.Object);summary;df-generated | +| System.Drawing;Font;FromLogFont;(System.Object,System.IntPtr);summary;df-generated | +| System.Drawing;Font;GetHashCode;();summary;df-generated | +| System.Drawing;Font;GetHeight;();summary;df-generated | +| System.Drawing;Font;GetHeight;(System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Font;GetHeight;(System.Single);summary;df-generated | +| System.Drawing;Font;ToLogFont;(System.Object);summary;df-generated | +| System.Drawing;Font;ToLogFont;(System.Object,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Font;ToString;();summary;df-generated | +| System.Drawing;Font;get_Bold;();summary;df-generated | +| System.Drawing;Font;get_GdiCharSet;();summary;df-generated | +| System.Drawing;Font;get_GdiVerticalFont;();summary;df-generated | +| System.Drawing;Font;get_Height;();summary;df-generated | +| System.Drawing;Font;get_IsSystemFont;();summary;df-generated | +| System.Drawing;Font;get_Italic;();summary;df-generated | +| System.Drawing;Font;get_Name;();summary;df-generated | +| System.Drawing;Font;get_Size;();summary;df-generated | +| System.Drawing;Font;get_SizeInPoints;();summary;df-generated | +| System.Drawing;Font;get_Strikeout;();summary;df-generated | +| System.Drawing;Font;get_Style;();summary;df-generated | +| System.Drawing;Font;get_Underline;();summary;df-generated | +| System.Drawing;Font;get_Unit;();summary;df-generated | +| System.Drawing;FontConverter+FontNameConverter;CanConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing;FontConverter+FontNameConverter;Dispose;();summary;df-generated | +| System.Drawing;FontConverter+FontNameConverter;FontNameConverter;();summary;df-generated | +| System.Drawing;FontConverter+FontNameConverter;GetStandardValues;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;FontConverter+FontNameConverter;GetStandardValuesExclusive;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;FontConverter+FontNameConverter;GetStandardValuesSupported;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;FontConverter+FontUnitConverter;FontUnitConverter;();summary;df-generated | +| System.Drawing;FontConverter+FontUnitConverter;GetStandardValues;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;FontConverter;CanConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing;FontConverter;CanConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing;FontConverter;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);summary;df-generated | +| System.Drawing;FontConverter;CreateInstance;(System.ComponentModel.ITypeDescriptorContext,System.Collections.IDictionary);summary;df-generated | +| System.Drawing;FontConverter;GetCreateInstanceSupported;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;FontConverter;GetProperties;(System.ComponentModel.ITypeDescriptorContext,System.Object,System.Attribute[]);summary;df-generated | +| System.Drawing;FontConverter;GetPropertiesSupported;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;FontFamily;Dispose;();summary;df-generated | +| System.Drawing;FontFamily;Equals;(System.Object);summary;df-generated | +| System.Drawing;FontFamily;FontFamily;(System.Drawing.Text.GenericFontFamilies);summary;df-generated | +| System.Drawing;FontFamily;FontFamily;(System.String);summary;df-generated | +| System.Drawing;FontFamily;FontFamily;(System.String,System.Drawing.Text.FontCollection);summary;df-generated | +| System.Drawing;FontFamily;GetCellAscent;(System.Drawing.FontStyle);summary;df-generated | +| System.Drawing;FontFamily;GetCellDescent;(System.Drawing.FontStyle);summary;df-generated | +| System.Drawing;FontFamily;GetEmHeight;(System.Drawing.FontStyle);summary;df-generated | +| System.Drawing;FontFamily;GetFamilies;(System.Drawing.Graphics);summary;df-generated | +| System.Drawing;FontFamily;GetHashCode;();summary;df-generated | +| System.Drawing;FontFamily;GetLineSpacing;(System.Drawing.FontStyle);summary;df-generated | +| System.Drawing;FontFamily;GetName;(System.Int32);summary;df-generated | +| System.Drawing;FontFamily;IsStyleAvailable;(System.Drawing.FontStyle);summary;df-generated | +| System.Drawing;FontFamily;ToString;();summary;df-generated | +| System.Drawing;FontFamily;get_Families;();summary;df-generated | +| System.Drawing;FontFamily;get_GenericMonospace;();summary;df-generated | +| System.Drawing;FontFamily;get_GenericSansSerif;();summary;df-generated | +| System.Drawing;FontFamily;get_GenericSerif;();summary;df-generated | +| System.Drawing;FontFamily;get_Name;();summary;df-generated | +| System.Drawing;Graphics;AddMetafileComment;(System.Byte[]);summary;df-generated | +| System.Drawing;Graphics;BeginContainer;();summary;df-generated | +| System.Drawing;Graphics;BeginContainer;(System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;BeginContainer;(System.Drawing.RectangleF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;Clear;(System.Drawing.Color);summary;df-generated | +| System.Drawing;Graphics;CopyFromScreen;(System.Drawing.Point,System.Drawing.Point,System.Drawing.Size);summary;df-generated | +| System.Drawing;Graphics;CopyFromScreen;(System.Drawing.Point,System.Drawing.Point,System.Drawing.Size,System.Drawing.CopyPixelOperation);summary;df-generated | +| System.Drawing;Graphics;CopyFromScreen;(System.Int32,System.Int32,System.Int32,System.Int32,System.Drawing.Size);summary;df-generated | +| System.Drawing;Graphics;CopyFromScreen;(System.Int32,System.Int32,System.Int32,System.Int32,System.Drawing.Size,System.Drawing.CopyPixelOperation);summary;df-generated | +| System.Drawing;Graphics;Dispose;();summary;df-generated | +| System.Drawing;Graphics;DrawArc;(System.Drawing.Pen,System.Drawing.Rectangle,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawArc;(System.Drawing.Pen,System.Drawing.RectangleF,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawArc;(System.Drawing.Pen,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawArc;(System.Drawing.Pen,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawBezier;(System.Drawing.Pen,System.Drawing.Point,System.Drawing.Point,System.Drawing.Point,System.Drawing.Point);summary;df-generated | +| System.Drawing;Graphics;DrawBezier;(System.Drawing.Pen,System.Drawing.PointF,System.Drawing.PointF,System.Drawing.PointF,System.Drawing.PointF);summary;df-generated | +| System.Drawing;Graphics;DrawBezier;(System.Drawing.Pen,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawBeziers;(System.Drawing.Pen,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing;Graphics;DrawBeziers;(System.Drawing.Pen,System.Drawing.Point[]);summary;df-generated | +| System.Drawing;Graphics;DrawClosedCurve;(System.Drawing.Pen,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing;Graphics;DrawClosedCurve;(System.Drawing.Pen,System.Drawing.PointF[],System.Single,System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing;Graphics;DrawClosedCurve;(System.Drawing.Pen,System.Drawing.Point[]);summary;df-generated | +| System.Drawing;Graphics;DrawClosedCurve;(System.Drawing.Pen,System.Drawing.Point[],System.Single,System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing;Graphics;DrawCurve;(System.Drawing.Pen,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing;Graphics;DrawCurve;(System.Drawing.Pen,System.Drawing.PointF[],System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawCurve;(System.Drawing.Pen,System.Drawing.PointF[],System.Int32,System.Int32,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawCurve;(System.Drawing.Pen,System.Drawing.PointF[],System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawCurve;(System.Drawing.Pen,System.Drawing.Point[]);summary;df-generated | +| System.Drawing;Graphics;DrawCurve;(System.Drawing.Pen,System.Drawing.Point[],System.Int32,System.Int32,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawCurve;(System.Drawing.Pen,System.Drawing.Point[],System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawEllipse;(System.Drawing.Pen,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;DrawEllipse;(System.Drawing.Pen,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Graphics;DrawEllipse;(System.Drawing.Pen,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawEllipse;(System.Drawing.Pen,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawIcon;(System.Drawing.Icon,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;DrawIcon;(System.Drawing.Icon,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawIconUnstretched;(System.Drawing.Icon,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Point);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.PointF);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Point[]);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Single,System.Single,System.Single,System.Single,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Single,System.Single,System.Single,System.Single,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.RectangleF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Int32,System.Int32,System.Drawing.Rectangle,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Single,System.Single,System.Drawing.RectangleF,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawImageUnscaled;(System.Drawing.Image,System.Drawing.Point);summary;df-generated | +| System.Drawing;Graphics;DrawImageUnscaled;(System.Drawing.Image,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;DrawImageUnscaled;(System.Drawing.Image,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawImageUnscaled;(System.Drawing.Image,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawImageUnscaledAndClipped;(System.Drawing.Image,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;DrawLine;(System.Drawing.Pen,System.Drawing.Point,System.Drawing.Point);summary;df-generated | +| System.Drawing;Graphics;DrawLine;(System.Drawing.Pen,System.Drawing.PointF,System.Drawing.PointF);summary;df-generated | +| System.Drawing;Graphics;DrawLine;(System.Drawing.Pen,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawLine;(System.Drawing.Pen,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawLines;(System.Drawing.Pen,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing;Graphics;DrawLines;(System.Drawing.Pen,System.Drawing.Point[]);summary;df-generated | +| System.Drawing;Graphics;DrawPath;(System.Drawing.Pen,System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing;Graphics;DrawPie;(System.Drawing.Pen,System.Drawing.Rectangle,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawPie;(System.Drawing.Pen,System.Drawing.RectangleF,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawPie;(System.Drawing.Pen,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawPie;(System.Drawing.Pen,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawPolygon;(System.Drawing.Pen,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing;Graphics;DrawPolygon;(System.Drawing.Pen,System.Drawing.Point[]);summary;df-generated | +| System.Drawing;Graphics;DrawRectangle;(System.Drawing.Pen,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;DrawRectangle;(System.Drawing.Pen,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawRectangle;(System.Drawing.Pen,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawRectangles;(System.Drawing.Pen,System.Drawing.RectangleF[]);summary;df-generated | +| System.Drawing;Graphics;DrawRectangles;(System.Drawing.Pen,System.Drawing.Rectangle[]);summary;df-generated | +| System.Drawing;Graphics;DrawString;(System.String,System.Drawing.Font,System.Drawing.Brush,System.Drawing.PointF);summary;df-generated | +| System.Drawing;Graphics;DrawString;(System.String,System.Drawing.Font,System.Drawing.Brush,System.Drawing.PointF,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing;Graphics;DrawString;(System.String,System.Drawing.Font,System.Drawing.Brush,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Graphics;DrawString;(System.String,System.Drawing.Font,System.Drawing.Brush,System.Drawing.RectangleF,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing;Graphics;DrawString;(System.String,System.Drawing.Font,System.Drawing.Brush,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawString;(System.String,System.Drawing.Font,System.Drawing.Brush,System.Single,System.Single,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing;Graphics;EndContainer;(System.Drawing.Drawing2D.GraphicsContainer);summary;df-generated | +| System.Drawing;Graphics;ExcludeClip;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;ExcludeClip;(System.Drawing.Region);summary;df-generated | +| System.Drawing;Graphics;FillClosedCurve;(System.Drawing.Brush,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing;Graphics;FillClosedCurve;(System.Drawing.Brush,System.Drawing.PointF[],System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing;Graphics;FillClosedCurve;(System.Drawing.Brush,System.Drawing.PointF[],System.Drawing.Drawing2D.FillMode,System.Single);summary;df-generated | +| System.Drawing;Graphics;FillClosedCurve;(System.Drawing.Brush,System.Drawing.Point[]);summary;df-generated | +| System.Drawing;Graphics;FillClosedCurve;(System.Drawing.Brush,System.Drawing.Point[],System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing;Graphics;FillClosedCurve;(System.Drawing.Brush,System.Drawing.Point[],System.Drawing.Drawing2D.FillMode,System.Single);summary;df-generated | +| System.Drawing;Graphics;FillEllipse;(System.Drawing.Brush,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;FillEllipse;(System.Drawing.Brush,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Graphics;FillEllipse;(System.Drawing.Brush,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;FillEllipse;(System.Drawing.Brush,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;FillPath;(System.Drawing.Brush,System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing;Graphics;FillPie;(System.Drawing.Brush,System.Drawing.Rectangle,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;FillPie;(System.Drawing.Brush,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;FillPie;(System.Drawing.Brush,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;FillPolygon;(System.Drawing.Brush,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing;Graphics;FillPolygon;(System.Drawing.Brush,System.Drawing.PointF[],System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing;Graphics;FillPolygon;(System.Drawing.Brush,System.Drawing.Point[]);summary;df-generated | +| System.Drawing;Graphics;FillPolygon;(System.Drawing.Brush,System.Drawing.Point[],System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing;Graphics;FillRectangle;(System.Drawing.Brush,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;FillRectangle;(System.Drawing.Brush,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Graphics;FillRectangle;(System.Drawing.Brush,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;FillRectangle;(System.Drawing.Brush,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;FillRectangles;(System.Drawing.Brush,System.Drawing.RectangleF[]);summary;df-generated | +| System.Drawing;Graphics;FillRectangles;(System.Drawing.Brush,System.Drawing.Rectangle[]);summary;df-generated | +| System.Drawing;Graphics;FillRegion;(System.Drawing.Brush,System.Drawing.Region);summary;df-generated | +| System.Drawing;Graphics;Flush;();summary;df-generated | +| System.Drawing;Graphics;Flush;(System.Drawing.Drawing2D.FlushIntention);summary;df-generated | +| System.Drawing;Graphics;FromHdc;(System.IntPtr);summary;df-generated | +| System.Drawing;Graphics;FromHdc;(System.IntPtr,System.IntPtr);summary;df-generated | +| System.Drawing;Graphics;FromHdcInternal;(System.IntPtr);summary;df-generated | +| System.Drawing;Graphics;FromHwnd;(System.IntPtr);summary;df-generated | +| System.Drawing;Graphics;FromHwndInternal;(System.IntPtr);summary;df-generated | +| System.Drawing;Graphics;GetContextInfo;();summary;df-generated | +| System.Drawing;Graphics;GetHalftonePalette;();summary;df-generated | +| System.Drawing;Graphics;GetNearestColor;(System.Drawing.Color);summary;df-generated | +| System.Drawing;Graphics;IntersectClip;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;IntersectClip;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Graphics;IntersectClip;(System.Drawing.Region);summary;df-generated | +| System.Drawing;Graphics;IsVisible;(System.Drawing.Point);summary;df-generated | +| System.Drawing;Graphics;IsVisible;(System.Drawing.PointF);summary;df-generated | +| System.Drawing;Graphics;IsVisible;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;IsVisible;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Graphics;IsVisible;(System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;IsVisible;(System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;IsVisible;(System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;IsVisible;(System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;MeasureCharacterRanges;(System.String,System.Drawing.Font,System.Drawing.RectangleF,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing;Graphics;MeasureString;(System.String,System.Drawing.Font);summary;df-generated | +| System.Drawing;Graphics;MeasureString;(System.String,System.Drawing.Font,System.Drawing.PointF,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing;Graphics;MeasureString;(System.String,System.Drawing.Font,System.Drawing.SizeF);summary;df-generated | +| System.Drawing;Graphics;MeasureString;(System.String,System.Drawing.Font,System.Drawing.SizeF,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing;Graphics;MeasureString;(System.String,System.Drawing.Font,System.Drawing.SizeF,System.Drawing.StringFormat,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;MeasureString;(System.String,System.Drawing.Font,System.Int32);summary;df-generated | +| System.Drawing;Graphics;MeasureString;(System.String,System.Drawing.Font,System.Int32,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing;Graphics;MultiplyTransform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing;Graphics;MultiplyTransform;(System.Drawing.Drawing2D.Matrix,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;Graphics;ReleaseHdc;();summary;df-generated | +| System.Drawing;Graphics;ReleaseHdc;(System.IntPtr);summary;df-generated | +| System.Drawing;Graphics;ReleaseHdcInternal;(System.IntPtr);summary;df-generated | +| System.Drawing;Graphics;ResetClip;();summary;df-generated | +| System.Drawing;Graphics;ResetTransform;();summary;df-generated | +| System.Drawing;Graphics;Restore;(System.Drawing.Drawing2D.GraphicsState);summary;df-generated | +| System.Drawing;Graphics;RotateTransform;(System.Single);summary;df-generated | +| System.Drawing;Graphics;RotateTransform;(System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;Graphics;Save;();summary;df-generated | +| System.Drawing;Graphics;ScaleTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;ScaleTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;Graphics;SetClip;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing;Graphics;SetClip;(System.Drawing.Drawing2D.GraphicsPath,System.Drawing.Drawing2D.CombineMode);summary;df-generated | +| System.Drawing;Graphics;SetClip;(System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Graphics;SetClip;(System.Drawing.Graphics,System.Drawing.Drawing2D.CombineMode);summary;df-generated | +| System.Drawing;Graphics;SetClip;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;SetClip;(System.Drawing.Rectangle,System.Drawing.Drawing2D.CombineMode);summary;df-generated | +| System.Drawing;Graphics;SetClip;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Graphics;SetClip;(System.Drawing.RectangleF,System.Drawing.Drawing2D.CombineMode);summary;df-generated | +| System.Drawing;Graphics;SetClip;(System.Drawing.Region,System.Drawing.Drawing2D.CombineMode);summary;df-generated | +| System.Drawing;Graphics;TransformPoints;(System.Drawing.Drawing2D.CoordinateSpace,System.Drawing.Drawing2D.CoordinateSpace,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing;Graphics;TransformPoints;(System.Drawing.Drawing2D.CoordinateSpace,System.Drawing.Drawing2D.CoordinateSpace,System.Drawing.Point[]);summary;df-generated | +| System.Drawing;Graphics;TranslateClip;(System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;TranslateClip;(System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;TranslateTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;TranslateTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;Graphics;get_Clip;();summary;df-generated | +| System.Drawing;Graphics;get_ClipBounds;();summary;df-generated | +| System.Drawing;Graphics;get_CompositingMode;();summary;df-generated | +| System.Drawing;Graphics;get_CompositingQuality;();summary;df-generated | +| System.Drawing;Graphics;get_DpiX;();summary;df-generated | +| System.Drawing;Graphics;get_DpiY;();summary;df-generated | +| System.Drawing;Graphics;get_InterpolationMode;();summary;df-generated | +| System.Drawing;Graphics;get_IsClipEmpty;();summary;df-generated | +| System.Drawing;Graphics;get_IsVisibleClipEmpty;();summary;df-generated | +| System.Drawing;Graphics;get_PageScale;();summary;df-generated | +| System.Drawing;Graphics;get_PageUnit;();summary;df-generated | +| System.Drawing;Graphics;get_PixelOffsetMode;();summary;df-generated | +| System.Drawing;Graphics;get_RenderingOrigin;();summary;df-generated | +| System.Drawing;Graphics;get_SmoothingMode;();summary;df-generated | +| System.Drawing;Graphics;get_TextContrast;();summary;df-generated | +| System.Drawing;Graphics;get_TextRenderingHint;();summary;df-generated | +| System.Drawing;Graphics;get_Transform;();summary;df-generated | +| System.Drawing;Graphics;get_VisibleClipBounds;();summary;df-generated | +| System.Drawing;Graphics;set_Clip;(System.Drawing.Region);summary;df-generated | +| System.Drawing;Graphics;set_CompositingMode;(System.Drawing.Drawing2D.CompositingMode);summary;df-generated | +| System.Drawing;Graphics;set_CompositingQuality;(System.Drawing.Drawing2D.CompositingQuality);summary;df-generated | +| System.Drawing;Graphics;set_InterpolationMode;(System.Drawing.Drawing2D.InterpolationMode);summary;df-generated | +| System.Drawing;Graphics;set_PageScale;(System.Single);summary;df-generated | +| System.Drawing;Graphics;set_PageUnit;(System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;set_PixelOffsetMode;(System.Drawing.Drawing2D.PixelOffsetMode);summary;df-generated | +| System.Drawing;Graphics;set_RenderingOrigin;(System.Drawing.Point);summary;df-generated | +| System.Drawing;Graphics;set_SmoothingMode;(System.Drawing.Drawing2D.SmoothingMode);summary;df-generated | +| System.Drawing;Graphics;set_TextContrast;(System.Int32);summary;df-generated | +| System.Drawing;Graphics;set_TextRenderingHint;(System.Drawing.Text.TextRenderingHint);summary;df-generated | +| System.Drawing;Graphics;set_Transform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing;IDeviceContext;GetHdc;();summary;df-generated | +| System.Drawing;IDeviceContext;ReleaseHdc;();summary;df-generated | +| System.Drawing;Icon;Dispose;();summary;df-generated | +| System.Drawing;Icon;ExtractAssociatedIcon;(System.String);summary;df-generated | +| System.Drawing;Icon;Icon;(System.Drawing.Icon,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Icon;Icon;(System.IO.Stream);summary;df-generated | +| System.Drawing;Icon;Icon;(System.IO.Stream,System.Drawing.Size);summary;df-generated | +| System.Drawing;Icon;Icon;(System.IO.Stream,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Icon;Icon;(System.String);summary;df-generated | +| System.Drawing;Icon;Icon;(System.String,System.Drawing.Size);summary;df-generated | +| System.Drawing;Icon;Icon;(System.String,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Icon;Icon;(System.Type,System.String);summary;df-generated | +| System.Drawing;Icon;Save;(System.IO.Stream);summary;df-generated | +| System.Drawing;Icon;ToBitmap;();summary;df-generated | +| System.Drawing;Icon;ToString;();summary;df-generated | +| System.Drawing;Icon;get_Height;();summary;df-generated | +| System.Drawing;Icon;get_Width;();summary;df-generated | +| System.Drawing;IconConverter;CanConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing;IconConverter;CanConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing;IconConverter;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);summary;df-generated | +| System.Drawing;IconConverter;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);summary;df-generated | +| System.Drawing;Image;Clone;();summary;df-generated | +| System.Drawing;Image;Dispose;();summary;df-generated | +| System.Drawing;Image;Dispose;(System.Boolean);summary;df-generated | +| System.Drawing;Image;FromHbitmap;(System.IntPtr);summary;df-generated | +| System.Drawing;Image;FromHbitmap;(System.IntPtr,System.IntPtr);summary;df-generated | +| System.Drawing;Image;FromStream;(System.IO.Stream);summary;df-generated | +| System.Drawing;Image;FromStream;(System.IO.Stream,System.Boolean);summary;df-generated | +| System.Drawing;Image;FromStream;(System.IO.Stream,System.Boolean,System.Boolean);summary;df-generated | +| System.Drawing;Image;GetBounds;(System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Image;GetEncoderParameterList;(System.Guid);summary;df-generated | +| System.Drawing;Image;GetFrameCount;(System.Drawing.Imaging.FrameDimension);summary;df-generated | +| System.Drawing;Image;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Drawing;Image;GetPixelFormatSize;(System.Drawing.Imaging.PixelFormat);summary;df-generated | +| System.Drawing;Image;GetPropertyItem;(System.Int32);summary;df-generated | +| System.Drawing;Image;IsAlphaPixelFormat;(System.Drawing.Imaging.PixelFormat);summary;df-generated | +| System.Drawing;Image;IsCanonicalPixelFormat;(System.Drawing.Imaging.PixelFormat);summary;df-generated | +| System.Drawing;Image;IsExtendedPixelFormat;(System.Drawing.Imaging.PixelFormat);summary;df-generated | +| System.Drawing;Image;RemovePropertyItem;(System.Int32);summary;df-generated | +| System.Drawing;Image;RotateFlip;(System.Drawing.RotateFlipType);summary;df-generated | +| System.Drawing;Image;Save;(System.IO.Stream,System.Drawing.Imaging.ImageCodecInfo,System.Drawing.Imaging.EncoderParameters);summary;df-generated | +| System.Drawing;Image;Save;(System.IO.Stream,System.Drawing.Imaging.ImageFormat);summary;df-generated | +| System.Drawing;Image;Save;(System.String);summary;df-generated | +| System.Drawing;Image;Save;(System.String,System.Drawing.Imaging.ImageCodecInfo,System.Drawing.Imaging.EncoderParameters);summary;df-generated | +| System.Drawing;Image;Save;(System.String,System.Drawing.Imaging.ImageFormat);summary;df-generated | +| System.Drawing;Image;SaveAdd;(System.Drawing.Image,System.Drawing.Imaging.EncoderParameters);summary;df-generated | +| System.Drawing;Image;SaveAdd;(System.Drawing.Imaging.EncoderParameters);summary;df-generated | +| System.Drawing;Image;SelectActiveFrame;(System.Drawing.Imaging.FrameDimension,System.Int32);summary;df-generated | +| System.Drawing;Image;SetPropertyItem;(System.Drawing.Imaging.PropertyItem);summary;df-generated | +| System.Drawing;Image;get_Flags;();summary;df-generated | +| System.Drawing;Image;get_FrameDimensionsList;();summary;df-generated | +| System.Drawing;Image;get_Height;();summary;df-generated | +| System.Drawing;Image;get_HorizontalResolution;();summary;df-generated | +| System.Drawing;Image;get_Palette;();summary;df-generated | +| System.Drawing;Image;get_PhysicalDimension;();summary;df-generated | +| System.Drawing;Image;get_PixelFormat;();summary;df-generated | +| System.Drawing;Image;get_PropertyIdList;();summary;df-generated | +| System.Drawing;Image;get_PropertyItems;();summary;df-generated | +| System.Drawing;Image;get_RawFormat;();summary;df-generated | +| System.Drawing;Image;get_Size;();summary;df-generated | +| System.Drawing;Image;get_VerticalResolution;();summary;df-generated | +| System.Drawing;Image;get_Width;();summary;df-generated | +| System.Drawing;Image;set_Palette;(System.Drawing.Imaging.ColorPalette);summary;df-generated | +| System.Drawing;ImageAnimator;CanAnimate;(System.Drawing.Image);summary;df-generated | +| System.Drawing;ImageAnimator;UpdateFrames;();summary;df-generated | +| System.Drawing;ImageAnimator;UpdateFrames;(System.Drawing.Image);summary;df-generated | +| System.Drawing;ImageConverter;CanConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing;ImageConverter;CanConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing;ImageConverter;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);summary;df-generated | +| System.Drawing;ImageConverter;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);summary;df-generated | +| System.Drawing;ImageConverter;GetProperties;(System.ComponentModel.ITypeDescriptorContext,System.Object,System.Attribute[]);summary;df-generated | +| System.Drawing;ImageConverter;GetPropertiesSupported;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;ImageFormatConverter;CanConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing;ImageFormatConverter;CanConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing;ImageFormatConverter;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);summary;df-generated | +| System.Drawing;ImageFormatConverter;GetStandardValues;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;ImageFormatConverter;GetStandardValuesSupported;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;Pen;Clone;();summary;df-generated | +| System.Drawing;Pen;Dispose;();summary;df-generated | +| System.Drawing;Pen;MultiplyTransform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing;Pen;MultiplyTransform;(System.Drawing.Drawing2D.Matrix,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;Pen;Pen;(System.Drawing.Brush);summary;df-generated | +| System.Drawing;Pen;Pen;(System.Drawing.Brush,System.Single);summary;df-generated | +| System.Drawing;Pen;Pen;(System.Drawing.Color);summary;df-generated | +| System.Drawing;Pen;ResetTransform;();summary;df-generated | +| System.Drawing;Pen;RotateTransform;(System.Single);summary;df-generated | +| System.Drawing;Pen;RotateTransform;(System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;Pen;ScaleTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing;Pen;ScaleTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;Pen;SetLineCap;(System.Drawing.Drawing2D.LineCap,System.Drawing.Drawing2D.LineCap,System.Drawing.Drawing2D.DashCap);summary;df-generated | +| System.Drawing;Pen;TranslateTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing;Pen;TranslateTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;Pen;get_Alignment;();summary;df-generated | +| System.Drawing;Pen;get_Brush;();summary;df-generated | +| System.Drawing;Pen;get_CompoundArray;();summary;df-generated | +| System.Drawing;Pen;get_CustomStartCap;();summary;df-generated | +| System.Drawing;Pen;get_DashCap;();summary;df-generated | +| System.Drawing;Pen;get_DashOffset;();summary;df-generated | +| System.Drawing;Pen;get_DashPattern;();summary;df-generated | +| System.Drawing;Pen;get_DashStyle;();summary;df-generated | +| System.Drawing;Pen;get_EndCap;();summary;df-generated | +| System.Drawing;Pen;get_LineJoin;();summary;df-generated | +| System.Drawing;Pen;get_MiterLimit;();summary;df-generated | +| System.Drawing;Pen;get_PenType;();summary;df-generated | +| System.Drawing;Pen;get_StartCap;();summary;df-generated | +| System.Drawing;Pen;get_Transform;();summary;df-generated | +| System.Drawing;Pen;get_Width;();summary;df-generated | +| System.Drawing;Pen;set_Alignment;(System.Drawing.Drawing2D.PenAlignment);summary;df-generated | +| System.Drawing;Pen;set_Brush;(System.Drawing.Brush);summary;df-generated | +| System.Drawing;Pen;set_CompoundArray;(System.Single[]);summary;df-generated | +| System.Drawing;Pen;set_CustomEndCap;(System.Drawing.Drawing2D.CustomLineCap);summary;df-generated | +| System.Drawing;Pen;set_CustomStartCap;(System.Drawing.Drawing2D.CustomLineCap);summary;df-generated | +| System.Drawing;Pen;set_DashCap;(System.Drawing.Drawing2D.DashCap);summary;df-generated | +| System.Drawing;Pen;set_DashOffset;(System.Single);summary;df-generated | +| System.Drawing;Pen;set_DashPattern;(System.Single[]);summary;df-generated | +| System.Drawing;Pen;set_DashStyle;(System.Drawing.Drawing2D.DashStyle);summary;df-generated | +| System.Drawing;Pen;set_EndCap;(System.Drawing.Drawing2D.LineCap);summary;df-generated | +| System.Drawing;Pen;set_LineJoin;(System.Drawing.Drawing2D.LineJoin);summary;df-generated | +| System.Drawing;Pen;set_MiterLimit;(System.Single);summary;df-generated | +| System.Drawing;Pen;set_StartCap;(System.Drawing.Drawing2D.LineCap);summary;df-generated | +| System.Drawing;Pen;set_Transform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing;Pen;set_Width;(System.Single);summary;df-generated | +| System.Drawing;Pens;get_AliceBlue;();summary;df-generated | +| System.Drawing;Pens;get_AntiqueWhite;();summary;df-generated | +| System.Drawing;Pens;get_Aqua;();summary;df-generated | +| System.Drawing;Pens;get_Aquamarine;();summary;df-generated | +| System.Drawing;Pens;get_Azure;();summary;df-generated | +| System.Drawing;Pens;get_Beige;();summary;df-generated | +| System.Drawing;Pens;get_Bisque;();summary;df-generated | +| System.Drawing;Pens;get_Black;();summary;df-generated | +| System.Drawing;Pens;get_BlanchedAlmond;();summary;df-generated | +| System.Drawing;Pens;get_Blue;();summary;df-generated | +| System.Drawing;Pens;get_BlueViolet;();summary;df-generated | +| System.Drawing;Pens;get_Brown;();summary;df-generated | +| System.Drawing;Pens;get_BurlyWood;();summary;df-generated | +| System.Drawing;Pens;get_CadetBlue;();summary;df-generated | +| System.Drawing;Pens;get_Chartreuse;();summary;df-generated | +| System.Drawing;Pens;get_Chocolate;();summary;df-generated | +| System.Drawing;Pens;get_Coral;();summary;df-generated | +| System.Drawing;Pens;get_CornflowerBlue;();summary;df-generated | +| System.Drawing;Pens;get_Cornsilk;();summary;df-generated | +| System.Drawing;Pens;get_Crimson;();summary;df-generated | +| System.Drawing;Pens;get_Cyan;();summary;df-generated | +| System.Drawing;Pens;get_DarkBlue;();summary;df-generated | +| System.Drawing;Pens;get_DarkCyan;();summary;df-generated | +| System.Drawing;Pens;get_DarkGoldenrod;();summary;df-generated | +| System.Drawing;Pens;get_DarkGray;();summary;df-generated | +| System.Drawing;Pens;get_DarkGreen;();summary;df-generated | +| System.Drawing;Pens;get_DarkKhaki;();summary;df-generated | +| System.Drawing;Pens;get_DarkMagenta;();summary;df-generated | +| System.Drawing;Pens;get_DarkOliveGreen;();summary;df-generated | +| System.Drawing;Pens;get_DarkOrange;();summary;df-generated | +| System.Drawing;Pens;get_DarkOrchid;();summary;df-generated | +| System.Drawing;Pens;get_DarkRed;();summary;df-generated | +| System.Drawing;Pens;get_DarkSalmon;();summary;df-generated | +| System.Drawing;Pens;get_DarkSeaGreen;();summary;df-generated | +| System.Drawing;Pens;get_DarkSlateBlue;();summary;df-generated | +| System.Drawing;Pens;get_DarkSlateGray;();summary;df-generated | +| System.Drawing;Pens;get_DarkTurquoise;();summary;df-generated | +| System.Drawing;Pens;get_DarkViolet;();summary;df-generated | +| System.Drawing;Pens;get_DeepPink;();summary;df-generated | +| System.Drawing;Pens;get_DeepSkyBlue;();summary;df-generated | +| System.Drawing;Pens;get_DimGray;();summary;df-generated | +| System.Drawing;Pens;get_DodgerBlue;();summary;df-generated | +| System.Drawing;Pens;get_Firebrick;();summary;df-generated | +| System.Drawing;Pens;get_FloralWhite;();summary;df-generated | +| System.Drawing;Pens;get_ForestGreen;();summary;df-generated | +| System.Drawing;Pens;get_Fuchsia;();summary;df-generated | +| System.Drawing;Pens;get_Gainsboro;();summary;df-generated | +| System.Drawing;Pens;get_GhostWhite;();summary;df-generated | +| System.Drawing;Pens;get_Gold;();summary;df-generated | +| System.Drawing;Pens;get_Goldenrod;();summary;df-generated | +| System.Drawing;Pens;get_Gray;();summary;df-generated | +| System.Drawing;Pens;get_Green;();summary;df-generated | +| System.Drawing;Pens;get_GreenYellow;();summary;df-generated | +| System.Drawing;Pens;get_Honeydew;();summary;df-generated | +| System.Drawing;Pens;get_HotPink;();summary;df-generated | +| System.Drawing;Pens;get_IndianRed;();summary;df-generated | +| System.Drawing;Pens;get_Indigo;();summary;df-generated | +| System.Drawing;Pens;get_Ivory;();summary;df-generated | +| System.Drawing;Pens;get_Khaki;();summary;df-generated | +| System.Drawing;Pens;get_Lavender;();summary;df-generated | +| System.Drawing;Pens;get_LavenderBlush;();summary;df-generated | +| System.Drawing;Pens;get_LawnGreen;();summary;df-generated | +| System.Drawing;Pens;get_LemonChiffon;();summary;df-generated | +| System.Drawing;Pens;get_LightBlue;();summary;df-generated | +| System.Drawing;Pens;get_LightCoral;();summary;df-generated | +| System.Drawing;Pens;get_LightCyan;();summary;df-generated | +| System.Drawing;Pens;get_LightGoldenrodYellow;();summary;df-generated | +| System.Drawing;Pens;get_LightGray;();summary;df-generated | +| System.Drawing;Pens;get_LightGreen;();summary;df-generated | +| System.Drawing;Pens;get_LightPink;();summary;df-generated | +| System.Drawing;Pens;get_LightSalmon;();summary;df-generated | +| System.Drawing;Pens;get_LightSeaGreen;();summary;df-generated | +| System.Drawing;Pens;get_LightSkyBlue;();summary;df-generated | +| System.Drawing;Pens;get_LightSlateGray;();summary;df-generated | +| System.Drawing;Pens;get_LightSteelBlue;();summary;df-generated | +| System.Drawing;Pens;get_LightYellow;();summary;df-generated | +| System.Drawing;Pens;get_Lime;();summary;df-generated | +| System.Drawing;Pens;get_LimeGreen;();summary;df-generated | +| System.Drawing;Pens;get_Linen;();summary;df-generated | +| System.Drawing;Pens;get_Magenta;();summary;df-generated | +| System.Drawing;Pens;get_Maroon;();summary;df-generated | +| System.Drawing;Pens;get_MediumAquamarine;();summary;df-generated | +| System.Drawing;Pens;get_MediumBlue;();summary;df-generated | +| System.Drawing;Pens;get_MediumOrchid;();summary;df-generated | +| System.Drawing;Pens;get_MediumPurple;();summary;df-generated | +| System.Drawing;Pens;get_MediumSeaGreen;();summary;df-generated | +| System.Drawing;Pens;get_MediumSlateBlue;();summary;df-generated | +| System.Drawing;Pens;get_MediumSpringGreen;();summary;df-generated | +| System.Drawing;Pens;get_MediumTurquoise;();summary;df-generated | +| System.Drawing;Pens;get_MediumVioletRed;();summary;df-generated | +| System.Drawing;Pens;get_MidnightBlue;();summary;df-generated | +| System.Drawing;Pens;get_MintCream;();summary;df-generated | +| System.Drawing;Pens;get_MistyRose;();summary;df-generated | +| System.Drawing;Pens;get_Moccasin;();summary;df-generated | +| System.Drawing;Pens;get_NavajoWhite;();summary;df-generated | +| System.Drawing;Pens;get_Navy;();summary;df-generated | +| System.Drawing;Pens;get_OldLace;();summary;df-generated | +| System.Drawing;Pens;get_Olive;();summary;df-generated | +| System.Drawing;Pens;get_OliveDrab;();summary;df-generated | +| System.Drawing;Pens;get_Orange;();summary;df-generated | +| System.Drawing;Pens;get_OrangeRed;();summary;df-generated | +| System.Drawing;Pens;get_Orchid;();summary;df-generated | +| System.Drawing;Pens;get_PaleGoldenrod;();summary;df-generated | +| System.Drawing;Pens;get_PaleGreen;();summary;df-generated | +| System.Drawing;Pens;get_PaleTurquoise;();summary;df-generated | +| System.Drawing;Pens;get_PaleVioletRed;();summary;df-generated | +| System.Drawing;Pens;get_PapayaWhip;();summary;df-generated | +| System.Drawing;Pens;get_PeachPuff;();summary;df-generated | +| System.Drawing;Pens;get_Peru;();summary;df-generated | +| System.Drawing;Pens;get_Pink;();summary;df-generated | +| System.Drawing;Pens;get_Plum;();summary;df-generated | +| System.Drawing;Pens;get_PowderBlue;();summary;df-generated | +| System.Drawing;Pens;get_Purple;();summary;df-generated | +| System.Drawing;Pens;get_Red;();summary;df-generated | +| System.Drawing;Pens;get_RosyBrown;();summary;df-generated | +| System.Drawing;Pens;get_RoyalBlue;();summary;df-generated | +| System.Drawing;Pens;get_SaddleBrown;();summary;df-generated | +| System.Drawing;Pens;get_Salmon;();summary;df-generated | +| System.Drawing;Pens;get_SandyBrown;();summary;df-generated | +| System.Drawing;Pens;get_SeaGreen;();summary;df-generated | +| System.Drawing;Pens;get_SeaShell;();summary;df-generated | +| System.Drawing;Pens;get_Sienna;();summary;df-generated | +| System.Drawing;Pens;get_Silver;();summary;df-generated | +| System.Drawing;Pens;get_SkyBlue;();summary;df-generated | +| System.Drawing;Pens;get_SlateBlue;();summary;df-generated | +| System.Drawing;Pens;get_SlateGray;();summary;df-generated | +| System.Drawing;Pens;get_Snow;();summary;df-generated | +| System.Drawing;Pens;get_SpringGreen;();summary;df-generated | +| System.Drawing;Pens;get_SteelBlue;();summary;df-generated | +| System.Drawing;Pens;get_Tan;();summary;df-generated | +| System.Drawing;Pens;get_Teal;();summary;df-generated | +| System.Drawing;Pens;get_Thistle;();summary;df-generated | +| System.Drawing;Pens;get_Tomato;();summary;df-generated | +| System.Drawing;Pens;get_Transparent;();summary;df-generated | +| System.Drawing;Pens;get_Turquoise;();summary;df-generated | +| System.Drawing;Pens;get_Violet;();summary;df-generated | +| System.Drawing;Pens;get_Wheat;();summary;df-generated | +| System.Drawing;Pens;get_White;();summary;df-generated | +| System.Drawing;Pens;get_WhiteSmoke;();summary;df-generated | +| System.Drawing;Pens;get_Yellow;();summary;df-generated | +| System.Drawing;Pens;get_YellowGreen;();summary;df-generated | | System.Drawing;Point;Add;(System.Drawing.Point,System.Drawing.Size);summary;df-generated | | System.Drawing;Point;Ceiling;(System.Drawing.PointF);summary;df-generated | | System.Drawing;Point;Equals;(System.Drawing.Point);summary;df-generated | @@ -22471,6 +26232,62 @@ neutral | System.Drawing;RectangleF;set_Width;(System.Single);summary;df-generated | | System.Drawing;RectangleF;set_X;(System.Single);summary;df-generated | | System.Drawing;RectangleF;set_Y;(System.Single);summary;df-generated | +| System.Drawing;Region;Clone;();summary;df-generated | +| System.Drawing;Region;Complement;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing;Region;Complement;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Region;Complement;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Region;Complement;(System.Drawing.Region);summary;df-generated | +| System.Drawing;Region;Dispose;();summary;df-generated | +| System.Drawing;Region;Equals;(System.Drawing.Region,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;Exclude;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing;Region;Exclude;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Region;Exclude;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Region;Exclude;(System.Drawing.Region);summary;df-generated | +| System.Drawing;Region;FromHrgn;(System.IntPtr);summary;df-generated | +| System.Drawing;Region;GetBounds;(System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;GetHrgn;(System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;GetRegionData;();summary;df-generated | +| System.Drawing;Region;GetRegionScans;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing;Region;Intersect;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing;Region;Intersect;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Region;Intersect;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Region;Intersect;(System.Drawing.Region);summary;df-generated | +| System.Drawing;Region;IsEmpty;(System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;IsInfinite;(System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Drawing.Point);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Drawing.Point,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Drawing.PointF);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Drawing.PointF,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Drawing.Rectangle,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Drawing.RectangleF,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Int32,System.Int32,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Int32,System.Int32,System.Int32,System.Int32,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Single,System.Single);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Single,System.Single,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Single,System.Single,System.Single,System.Single,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;MakeEmpty;();summary;df-generated | +| System.Drawing;Region;MakeInfinite;();summary;df-generated | +| System.Drawing;Region;Region;();summary;df-generated | +| System.Drawing;Region;Region;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing;Region;Region;(System.Drawing.Drawing2D.RegionData);summary;df-generated | +| System.Drawing;Region;Region;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Region;Region;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Region;ReleaseHrgn;(System.IntPtr);summary;df-generated | +| System.Drawing;Region;Transform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing;Region;Translate;(System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Region;Translate;(System.Single,System.Single);summary;df-generated | +| System.Drawing;Region;Union;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing;Region;Union;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Region;Union;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Region;Union;(System.Drawing.Region);summary;df-generated | +| System.Drawing;Region;Xor;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing;Region;Xor;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Region;Xor;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Region;Xor;(System.Drawing.Region);summary;df-generated | | System.Drawing;Size;Add;(System.Drawing.Size,System.Drawing.Size);summary;df-generated | | System.Drawing;Size;Ceiling;(System.Drawing.SizeF);summary;df-generated | | System.Drawing;Size;Equals;(System.Drawing.Size);summary;df-generated | @@ -22519,6 +26336,67 @@ neutral | System.Drawing;SizeFConverter;GetCreateInstanceSupported;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | | System.Drawing;SizeFConverter;GetProperties;(System.ComponentModel.ITypeDescriptorContext,System.Object,System.Attribute[]);summary;df-generated | | System.Drawing;SizeFConverter;GetPropertiesSupported;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;SolidBrush;Clone;();summary;df-generated | +| System.Drawing;SolidBrush;Dispose;(System.Boolean);summary;df-generated | +| System.Drawing;StringFormat;Clone;();summary;df-generated | +| System.Drawing;StringFormat;Dispose;();summary;df-generated | +| System.Drawing;StringFormat;GetTabStops;(System.Single);summary;df-generated | +| System.Drawing;StringFormat;SetDigitSubstitution;(System.Int32,System.Drawing.StringDigitSubstitute);summary;df-generated | +| System.Drawing;StringFormat;SetMeasurableCharacterRanges;(System.Drawing.CharacterRange[]);summary;df-generated | +| System.Drawing;StringFormat;SetTabStops;(System.Single,System.Single[]);summary;df-generated | +| System.Drawing;StringFormat;StringFormat;();summary;df-generated | +| System.Drawing;StringFormat;StringFormat;(System.Drawing.StringFormat);summary;df-generated | +| System.Drawing;StringFormat;StringFormat;(System.Drawing.StringFormatFlags);summary;df-generated | +| System.Drawing;StringFormat;StringFormat;(System.Drawing.StringFormatFlags,System.Int32);summary;df-generated | +| System.Drawing;StringFormat;ToString;();summary;df-generated | +| System.Drawing;StringFormat;get_Alignment;();summary;df-generated | +| System.Drawing;StringFormat;get_DigitSubstitutionLanguage;();summary;df-generated | +| System.Drawing;StringFormat;get_DigitSubstitutionMethod;();summary;df-generated | +| System.Drawing;StringFormat;get_FormatFlags;();summary;df-generated | +| System.Drawing;StringFormat;get_GenericDefault;();summary;df-generated | +| System.Drawing;StringFormat;get_GenericTypographic;();summary;df-generated | +| System.Drawing;StringFormat;get_HotkeyPrefix;();summary;df-generated | +| System.Drawing;StringFormat;get_LineAlignment;();summary;df-generated | +| System.Drawing;StringFormat;get_Trimming;();summary;df-generated | +| System.Drawing;StringFormat;set_Alignment;(System.Drawing.StringAlignment);summary;df-generated | +| System.Drawing;StringFormat;set_FormatFlags;(System.Drawing.StringFormatFlags);summary;df-generated | +| System.Drawing;StringFormat;set_HotkeyPrefix;(System.Drawing.Text.HotkeyPrefix);summary;df-generated | +| System.Drawing;StringFormat;set_LineAlignment;(System.Drawing.StringAlignment);summary;df-generated | +| System.Drawing;StringFormat;set_Trimming;(System.Drawing.StringTrimming);summary;df-generated | +| System.Drawing;SystemBrushes;FromSystemColor;(System.Drawing.Color);summary;df-generated | +| System.Drawing;SystemBrushes;get_ActiveBorder;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ActiveCaption;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ActiveCaptionText;();summary;df-generated | +| System.Drawing;SystemBrushes;get_AppWorkspace;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ButtonFace;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ButtonHighlight;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ButtonShadow;();summary;df-generated | +| System.Drawing;SystemBrushes;get_Control;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ControlDark;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ControlDarkDark;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ControlLight;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ControlLightLight;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ControlText;();summary;df-generated | +| System.Drawing;SystemBrushes;get_Desktop;();summary;df-generated | +| System.Drawing;SystemBrushes;get_GradientActiveCaption;();summary;df-generated | +| System.Drawing;SystemBrushes;get_GradientInactiveCaption;();summary;df-generated | +| System.Drawing;SystemBrushes;get_GrayText;();summary;df-generated | +| System.Drawing;SystemBrushes;get_Highlight;();summary;df-generated | +| System.Drawing;SystemBrushes;get_HighlightText;();summary;df-generated | +| System.Drawing;SystemBrushes;get_HotTrack;();summary;df-generated | +| System.Drawing;SystemBrushes;get_InactiveBorder;();summary;df-generated | +| System.Drawing;SystemBrushes;get_InactiveCaption;();summary;df-generated | +| System.Drawing;SystemBrushes;get_InactiveCaptionText;();summary;df-generated | +| System.Drawing;SystemBrushes;get_Info;();summary;df-generated | +| System.Drawing;SystemBrushes;get_InfoText;();summary;df-generated | +| System.Drawing;SystemBrushes;get_Menu;();summary;df-generated | +| System.Drawing;SystemBrushes;get_MenuBar;();summary;df-generated | +| System.Drawing;SystemBrushes;get_MenuHighlight;();summary;df-generated | +| System.Drawing;SystemBrushes;get_MenuText;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ScrollBar;();summary;df-generated | +| System.Drawing;SystemBrushes;get_Window;();summary;df-generated | +| System.Drawing;SystemBrushes;get_WindowFrame;();summary;df-generated | +| System.Drawing;SystemBrushes;get_WindowText;();summary;df-generated | | System.Drawing;SystemColors;get_ActiveBorder;();summary;df-generated | | System.Drawing;SystemColors;get_ActiveCaption;();summary;df-generated | | System.Drawing;SystemColors;get_ActiveCaptionText;();summary;df-generated | @@ -22552,6 +26430,88 @@ neutral | System.Drawing;SystemColors;get_Window;();summary;df-generated | | System.Drawing;SystemColors;get_WindowFrame;();summary;df-generated | | System.Drawing;SystemColors;get_WindowText;();summary;df-generated | +| System.Drawing;SystemFonts;GetFontByName;(System.String);summary;df-generated | +| System.Drawing;SystemFonts;get_CaptionFont;();summary;df-generated | +| System.Drawing;SystemFonts;get_DefaultFont;();summary;df-generated | +| System.Drawing;SystemFonts;get_DialogFont;();summary;df-generated | +| System.Drawing;SystemFonts;get_IconTitleFont;();summary;df-generated | +| System.Drawing;SystemFonts;get_MenuFont;();summary;df-generated | +| System.Drawing;SystemFonts;get_MessageBoxFont;();summary;df-generated | +| System.Drawing;SystemFonts;get_SmallCaptionFont;();summary;df-generated | +| System.Drawing;SystemFonts;get_StatusFont;();summary;df-generated | +| System.Drawing;SystemIcons;get_Application;();summary;df-generated | +| System.Drawing;SystemIcons;get_Asterisk;();summary;df-generated | +| System.Drawing;SystemIcons;get_Error;();summary;df-generated | +| System.Drawing;SystemIcons;get_Exclamation;();summary;df-generated | +| System.Drawing;SystemIcons;get_Hand;();summary;df-generated | +| System.Drawing;SystemIcons;get_Information;();summary;df-generated | +| System.Drawing;SystemIcons;get_Question;();summary;df-generated | +| System.Drawing;SystemIcons;get_Shield;();summary;df-generated | +| System.Drawing;SystemIcons;get_Warning;();summary;df-generated | +| System.Drawing;SystemIcons;get_WinLogo;();summary;df-generated | +| System.Drawing;SystemPens;FromSystemColor;(System.Drawing.Color);summary;df-generated | +| System.Drawing;SystemPens;get_ActiveBorder;();summary;df-generated | +| System.Drawing;SystemPens;get_ActiveCaption;();summary;df-generated | +| System.Drawing;SystemPens;get_ActiveCaptionText;();summary;df-generated | +| System.Drawing;SystemPens;get_AppWorkspace;();summary;df-generated | +| System.Drawing;SystemPens;get_ButtonFace;();summary;df-generated | +| System.Drawing;SystemPens;get_ButtonHighlight;();summary;df-generated | +| System.Drawing;SystemPens;get_ButtonShadow;();summary;df-generated | +| System.Drawing;SystemPens;get_Control;();summary;df-generated | +| System.Drawing;SystemPens;get_ControlDark;();summary;df-generated | +| System.Drawing;SystemPens;get_ControlDarkDark;();summary;df-generated | +| System.Drawing;SystemPens;get_ControlLight;();summary;df-generated | +| System.Drawing;SystemPens;get_ControlLightLight;();summary;df-generated | +| System.Drawing;SystemPens;get_ControlText;();summary;df-generated | +| System.Drawing;SystemPens;get_Desktop;();summary;df-generated | +| System.Drawing;SystemPens;get_GradientActiveCaption;();summary;df-generated | +| System.Drawing;SystemPens;get_GradientInactiveCaption;();summary;df-generated | +| System.Drawing;SystemPens;get_GrayText;();summary;df-generated | +| System.Drawing;SystemPens;get_Highlight;();summary;df-generated | +| System.Drawing;SystemPens;get_HighlightText;();summary;df-generated | +| System.Drawing;SystemPens;get_HotTrack;();summary;df-generated | +| System.Drawing;SystemPens;get_InactiveBorder;();summary;df-generated | +| System.Drawing;SystemPens;get_InactiveCaption;();summary;df-generated | +| System.Drawing;SystemPens;get_InactiveCaptionText;();summary;df-generated | +| System.Drawing;SystemPens;get_Info;();summary;df-generated | +| System.Drawing;SystemPens;get_InfoText;();summary;df-generated | +| System.Drawing;SystemPens;get_Menu;();summary;df-generated | +| System.Drawing;SystemPens;get_MenuBar;();summary;df-generated | +| System.Drawing;SystemPens;get_MenuHighlight;();summary;df-generated | +| System.Drawing;SystemPens;get_MenuText;();summary;df-generated | +| System.Drawing;SystemPens;get_ScrollBar;();summary;df-generated | +| System.Drawing;SystemPens;get_Window;();summary;df-generated | +| System.Drawing;SystemPens;get_WindowFrame;();summary;df-generated | +| System.Drawing;SystemPens;get_WindowText;();summary;df-generated | +| System.Drawing;TextureBrush;Clone;();summary;df-generated | +| System.Drawing;TextureBrush;MultiplyTransform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing;TextureBrush;MultiplyTransform;(System.Drawing.Drawing2D.Matrix,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;TextureBrush;ResetTransform;();summary;df-generated | +| System.Drawing;TextureBrush;RotateTransform;(System.Single);summary;df-generated | +| System.Drawing;TextureBrush;RotateTransform;(System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;TextureBrush;ScaleTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing;TextureBrush;ScaleTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;TextureBrush;TextureBrush;(System.Drawing.Image);summary;df-generated | +| System.Drawing;TextureBrush;TextureBrush;(System.Drawing.Image,System.Drawing.Drawing2D.WrapMode);summary;df-generated | +| System.Drawing;TextureBrush;TextureBrush;(System.Drawing.Image,System.Drawing.Drawing2D.WrapMode,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;TextureBrush;TextureBrush;(System.Drawing.Image,System.Drawing.Drawing2D.WrapMode,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;TextureBrush;TextureBrush;(System.Drawing.Image,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;TextureBrush;TextureBrush;(System.Drawing.Image,System.Drawing.Rectangle,System.Drawing.Imaging.ImageAttributes);summary;df-generated | +| System.Drawing;TextureBrush;TextureBrush;(System.Drawing.Image,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;TextureBrush;TextureBrush;(System.Drawing.Image,System.Drawing.RectangleF,System.Drawing.Imaging.ImageAttributes);summary;df-generated | +| System.Drawing;TextureBrush;TranslateTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing;TextureBrush;TranslateTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;TextureBrush;get_Image;();summary;df-generated | +| System.Drawing;TextureBrush;get_Transform;();summary;df-generated | +| System.Drawing;TextureBrush;get_WrapMode;();summary;df-generated | +| System.Drawing;TextureBrush;set_Transform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing;TextureBrush;set_WrapMode;(System.Drawing.Drawing2D.WrapMode);summary;df-generated | +| System.Drawing;ToolboxBitmapAttribute;Equals;(System.Object);summary;df-generated | +| System.Drawing;ToolboxBitmapAttribute;GetHashCode;();summary;df-generated | +| System.Drawing;ToolboxBitmapAttribute;GetImageFromResource;(System.Type,System.String,System.Boolean);summary;df-generated | +| System.Drawing;ToolboxBitmapAttribute;ToolboxBitmapAttribute;(System.String);summary;df-generated | +| System.Drawing;ToolboxBitmapAttribute;ToolboxBitmapAttribute;(System.Type);summary;df-generated | +| System.Drawing;ToolboxBitmapAttribute;ToolboxBitmapAttribute;(System.Type,System.String);summary;df-generated | | System.Dynamic;BinaryOperationBinder;BinaryOperationBinder;(System.Linq.Expressions.ExpressionType);summary;df-generated | | System.Dynamic;BinaryOperationBinder;Bind;(System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[]);summary;df-generated | | System.Dynamic;BinaryOperationBinder;FallbackBinaryOperation;(System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject);summary;df-generated | diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected index 4a121dcab40..376b36977ac 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected @@ -1,4 +1,54 @@ summary +| Dapper;CustomPropertyTypeMap;false;CustomPropertyTypeMap;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Dapper;DynamicParameters;false;Output<>;(T,System.Linq.Expressions.Expression>,System.Nullable,System.Nullable);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper+GridReader;false;Read<,,,,,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper+GridReader;false;Read<,,,,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper+GridReader;false;Read<,,,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper+GridReader;false;Read<,,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper+GridReader;false;Read<,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper+GridReader;false;Read<,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper+GridReader;false;Read<>;(System.Type[],System.Func,System.String,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper;false;QueryAsync<,,,,,,,>;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper;false;QueryAsync<,,,,,,>;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper;false;QueryAsync<,,,,,>;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper;false;QueryAsync<,,,,>;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper;false;QueryAsync<,,,>;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper;false;QueryAsync<,,>;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| 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[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper;false;add_QueryCachePurged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper;false;remove_QueryCachePurged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,,,,,>;(Funq.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,,,,,>;(System.String,Funq.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,,,,>;(Funq.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,,,,>;(System.String,Funq.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,,,>;(Funq.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,,,>;(System.String,Funq.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,,>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,,>;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,,>;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<,>;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;Register<>;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Funq;Container;false;RegisterFactory<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Funq;Func<,,,,,,,>;false;BeginInvoke;(T1,T2,T3,T4,T5,T6,T7,System.AsyncCallback,System.Object);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| Funq;Func<,,,,,,>;false;BeginInvoke;(T1,T2,T3,T4,T5,T6,System.AsyncCallback,System.Object);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| Funq;Func<,,,,,>;false;BeginInvoke;(T1,T2,T3,T4,T5,System.AsyncCallback,System.Object);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| Funq;IInitializable<>;true;InitializedBy;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Microsoft.AspNetCore.Authentication.Cookies;CookieAuthenticationEvents;false;set_OnCheckSlidingExpiration;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Microsoft.AspNetCore.Authentication.Cookies;CookieAuthenticationEvents;false;set_OnRedirectToAccessDenied;(System.Func,System.Threading.Tasks.Task>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Microsoft.AspNetCore.Authentication.Cookies;CookieAuthenticationEvents;false;set_OnRedirectToLogin;(System.Func,System.Threading.Tasks.Task>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | @@ -1423,6 +1473,1895 @@ summary | Newtonsoft.Json;JsonSerializerSettings;false;set_ReferenceResolverProvider;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Newtonsoft.Json;JsonValidatingReader;false;add_ValidationEventHandler;(Newtonsoft.Json.Schema.ValidationEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Newtonsoft.Json;JsonValidatingReader;false;remove_ValidationEventHandler;(Newtonsoft.Json.Schema.ValidationEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Admin;AdminUsersFeature;false;RemoveFromUserForm;(System.Predicate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Admin;AdminUsersFeature;false;set_OnAfterCreateUser;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Admin;AdminUsersFeature;false;set_OnAfterDeleteUser;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Admin;AdminUsersFeature;false;set_OnAfterUpdateUser;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Admin;AdminUsersFeature;false;set_OnBeforeCreateUser;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Admin;AdminUsersFeature;false;set_OnBeforeDeleteUser;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Admin;AdminUsersFeature;false;set_OnBeforeUpdateUser;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Admin;AdminUsersFeature;false;set_ValidateFn;(ServiceStack.Auth.ValidateAsyncFn);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.AsyncEx;TaskCompletionSourceExtensions;false;TryCompleteFromCompletedTask<>;(System.Threading.Tasks.TaskCompletionSource,System.Threading.Tasks.Task,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;ApiKeyAuthProvider;false;set_CreateApiKeyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;ApiKeyAuthProvider;false;set_GenerateApiKey;(ServiceStack.Auth.CreateApiKeyDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthProvider;false;set_AccountLockedValidator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthProvider;false;set_CustomValidationFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthProvider;false;set_LoadUserAuthFilter;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthProvider;false;set_LoadUserAuthInfoFilterAsync;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.Task>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthProviderSync;false;set_AccountLockedValidator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthProviderSync;false;set_CustomValidationFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthProviderSync;false;set_LoadUserAuthFilter;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthenticateService;false;Init;(System.Func,ServiceStack.Auth.IAuthProvider[]);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthenticateService;false;set_AuthResponseDecorator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthenticateService;false;set_CurrentSessionFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;AuthenticateService;false;set_ValidateFn;(ServiceStack.Auth.ValidateFn);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;CreateApiKeyDelegate;false;BeginInvoke;(System.String,System.String,System.Int32,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProvider;false;CreateJwt;(ServiceStack.Text.JsonObject,ServiceStack.Text.JsonObject,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProviderReader;false;set_CreateHeaderFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProviderReader;false;set_CreatePayloadFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProviderReader;false;set_PopulateSessionFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProviderReader;false;set_PreValidateJwtPayloadFilter;(System.Func,System.String>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProviderReader;false;set_ResolveJwtId;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProviderReader;false;set_ResolveRefreshJwtId;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProviderReader;false;set_ResolveUnixTime;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProviderReader;false;set_ValidateRefreshToken;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;JwtAuthProviderReader;false;set_ValidateToken;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;MicrosoftGraphAuthProvider;false;set_PhotoUrl;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;NetCoreIdentityAuthProvider;false;set_AutoSignInSessionsMatching;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;NetCoreIdentityAuthProvider;false;set_CreateClaimsPrincipal;(System.Func,ServiceStack.Auth.IAuthSession,ServiceStack.Web.IRequest,System.Security.Claims.ClaimsPrincipal>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;NetCoreIdentityAuthProvider;false;set_PopulateSessionFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;OAuth2Provider;false;set_ResolveUnknownDisplayName;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;OAuthProvider;false;set_VerifyAccessTokenAsync;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;OAuthProviderSync;false;set_VerifyAccessToken;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;Pbkdf2DeriveKeyDelegate;false;BeginInvoke;(System.String,System.Byte[],Microsoft.AspNetCore.Cryptography.KeyDerivation.KeyDerivationPrf,System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;Pbkdf2Provider;false;set_DeriveKey;(ServiceStack.Auth.Pbkdf2DeriveKeyDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;RegisterService;false;set_ValidateFn;(ServiceStack.Auth.ValidateFn);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;ValidateAsyncFn;false;BeginInvoke;(ServiceStack.IServiceBase,System.String,System.Object,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Auth;ValidateFn;false;BeginInvoke;(ServiceStack.IServiceBase,System.String,System.Object,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Configuration;AppSettingsBase;false;set_ParsingStrategy;(ServiceStack.Configuration.ParsingStrategyDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Configuration;ParsingStrategyDelegate;false;BeginInvoke;(System.String,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Data;DbConnectionFactory;false;DbConnectionFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Attributes;AttributedValidatorFactory;false;AttributedValidatorFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;AccessorCache<>;false;GetCachedAccessor<>;(System.Reflection.MemberInfo,System.Linq.Expressions.Expression>,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;CollectionPropertyRule<,>;false;CollectionPropertyRule;(System.Reflection.MemberInfo,System.Func,System.Linq.Expressions.LambdaExpression,System.Func,System.Type,System.Type);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;CollectionPropertyRule<,>;false;CollectionPropertyRule;(System.Reflection.MemberInfo,System.Func,System.Linq.Expressions.LambdaExpression,System.Func,System.Type,System.Type);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;CollectionPropertyRule<,>;false;Create;(System.Linq.Expressions.Expression>>,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;CollectionPropertyRule<,>;false;Create;(System.Linq.Expressions.Expression>>,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;CollectionPropertyRule<,>;false;set_Filter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;CollectionPropertyRule<,>;false;set_IndexBuilder;(System.Func,TElement,System.Int32,System.String>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;CoerceToNonGeneric<,>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;CoerceToNonGeneric<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;CoerceToNonGeneric<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;CoerceToNonGeneric<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;CoerceToNonGeneric<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;CoerceToNonGeneric<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;CoerceToNonGeneric<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;CoerceToNonGeneric<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;CoerceToNonGeneric<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;Extensions;false;GetMember<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;IConfigurable<,>;true;Configure;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;IncludeRule<>;false;Create;(ServiceStack.FluentValidation.IValidator,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;IncludeRule<>;false;Create<>;(System.Func,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;IncludeRule<>;false;Create<>;(System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;IncludeRule<>;false;IncludeRule;(ServiceStack.FluentValidation.IValidator,System.Func,System.Type,System.Type);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;IncludeRule<>;false;IncludeRule;(System.Func>,System.Func,System.Type,System.Type,System.Type);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;IncludeRule<>;false;IncludeRule;(System.Func>,System.Func,System.Type,System.Type,System.Type);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;MemberAccessor<,>;false;MemberAccessor;(System.Linq.Expressions.Expression>,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;MemberAccessor<,>;false;op_Implicit;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;Create<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;Create<,>;(System.Linq.Expressions.Expression>,System.Func,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;Create<,>;(System.Linq.Expressions.Expression>,System.Func,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;PropertyRule;(System.Reflection.MemberInfo,System.Func,System.Linq.Expressions.LambdaExpression,System.Func,System.Type,System.Type);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;PropertyRule;(System.Reflection.MemberInfo,System.Func,System.Linq.Expressions.LambdaExpression,System.Func,System.Type,System.Type);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;SetDisplayName;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;set_MessageBuilder;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;set_OnFailure;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;PropertyRule;false;set_Transformer;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Internal;RuleBuilder<,>;false;SetValidator<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Resources;LanguageStringSource;false;LanguageStringSource;(System.Func,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Resources;LazyStringSource;false;LazyStringSource;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Results;ValidationFailure;false;set_ErrorCodeResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ITestPropertyChain<>;true;Property<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;TestValidationResult<>;false;ShouldHaveValidationErrorFor<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;TestValidationResult<>;false;ShouldNotHaveValidationErrorFor<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;ShouldHaveChildValidator<,>;(ServiceStack.FluentValidation.IValidator,System.Linq.Expressions.Expression>,System.Type);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;ShouldHaveValidationErrorFor<,>;(ServiceStack.FluentValidation.IValidator,System.Linq.Expressions.Expression>,T,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;ShouldHaveValidationErrorFor<,>;(ServiceStack.FluentValidation.IValidator,System.Linq.Expressions.Expression>,TValue,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;ShouldHaveValidationErrorForAsync<,>;(ServiceStack.FluentValidation.IValidator,System.Linq.Expressions.Expression>,T,System.Threading.CancellationToken,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;ShouldHaveValidationErrorForAsync<,>;(ServiceStack.FluentValidation.IValidator,System.Linq.Expressions.Expression>,TValue,System.Threading.CancellationToken,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;ShouldNotHaveValidationErrorFor<,>;(ServiceStack.FluentValidation.IValidator,System.Linq.Expressions.Expression>,T,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;ShouldNotHaveValidationErrorFor<,>;(ServiceStack.FluentValidation.IValidator,System.Linq.Expressions.Expression>,TValue,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;ShouldNotHaveValidationErrorForAsync<,>;(ServiceStack.FluentValidation.IValidator,System.Linq.Expressions.Expression>,T,System.Threading.CancellationToken,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;ShouldNotHaveValidationErrorForAsync<,>;(ServiceStack.FluentValidation.IValidator,System.Linq.Expressions.Expression>,TValue,System.Threading.CancellationToken,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;TestValidate<>;(ServiceStack.FluentValidation.IValidator,T,System.Action>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;TestValidateAsync<>;(ServiceStack.FluentValidation.IValidator,T,System.Action>,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;When;(System.Collections.Generic.IEnumerable,System.Func,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidationTestExtension;false;WhenAll;(System.Collections.Generic.IEnumerable,System.Func,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.TestHelper;ValidatorTester<,>;false;ValidatorTester;(System.Linq.Expressions.Expression>,ServiceStack.FluentValidation.IValidator,TValue);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;AbstractComparisonValidator;false;AbstractComparisonValidator;(System.Func,System.Reflection.MemberInfo,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;AbstractComparisonValidator;false;AbstractComparisonValidator;(System.Func,System.Reflection.MemberInfo,System.String,ServiceStack.FluentValidation.Resources.IStringSource);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;AsyncPredicateValidator;false;AsyncPredicateValidator;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;ChildValidatorAdaptor<,>;false;ChildValidatorAdaptor;(System.Func>,System.Type);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;CustomValidator<>;false;CustomValidator;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;CustomValidator<>;false;CustomValidator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;EqualValidator;false;EqualValidator;(System.Func,System.Reflection.MemberInfo,System.String,System.Collections.IEqualityComparer);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;ExactLengthValidator;false;ExactLengthValidator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;GreaterThanOrEqualValidator;false;GreaterThanOrEqualValidator;(System.Func,System.Reflection.MemberInfo,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;GreaterThanValidator;false;GreaterThanValidator;(System.Func,System.Reflection.MemberInfo,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;LengthValidator;false;LengthValidator;(System.Func,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;LengthValidator;false;LengthValidator;(System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;LengthValidator;false;set_MaxFunc;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;LengthValidator;false;set_MinFunc;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;LessThanOrEqualValidator;false;LessThanOrEqualValidator;(System.Func,System.Reflection.MemberInfo,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;LessThanValidator;false;LessThanValidator;(System.Func,System.Reflection.MemberInfo,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;MaximumLengthValidator;false;MaximumLengthValidator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;MinimumLengthValidator;false;MinimumLengthValidator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;NotEqualValidator;false;NotEqualValidator;(System.Func,System.Reflection.MemberInfo,System.String,System.Collections.IEqualityComparer);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;OnFailureValidator<>;false;OnFailureValidator;(ServiceStack.FluentValidation.Validators.IPropertyValidator,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;PolymorphicValidator<,>;false;Add<>;(System.Func>,System.String[]);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;PolymorphicValidator<,>;false;Add<>;(System.Func>,System.String[]);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;PredicateValidator+Predicate;false;BeginInvoke;(System.Object,System.Object,ServiceStack.FluentValidation.Validators.PropertyValidatorContext,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;PredicateValidator;false;PredicateValidator;(ServiceStack.FluentValidation.Validators.PredicateValidator+Predicate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;RegularExpressionValidator;false;RegularExpressionValidator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;RegularExpressionValidator;false;RegularExpressionValidator;(System.Func,System.Text.RegularExpressions.RegexOptions);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation.Validators;RegularExpressionValidator;false;RegularExpressionValidator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;Include<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;RuleFor<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;RuleForEach<>;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;RuleSet;(ServiceStack.ApplyTo,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;RuleSet;(System.String,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;Transform<,>;(System.Linq.Expressions.Expression>,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;Transform<,>;(System.Linq.Expressions.Expression>,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;Transform<,>;(System.Linq.Expressions.Expression>,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;Transform<,>;(System.Linq.Expressions.Expression>,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;TransformForEach<,>;(System.Linq.Expressions.Expression>>,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;TransformForEach<,>;(System.Linq.Expressions.Expression>>,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;TransformForEach<,>;(System.Linq.Expressions.Expression>>,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;TransformForEach<,>;(System.Linq.Expressions.Expression>>,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;Unless;(System.Func,System.Boolean>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;Unless;(System.Func,System.Boolean>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;Unless;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;Unless;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;UnlessAsync;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.Task>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;UnlessAsync;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.Task>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;UnlessAsync;(System.Func>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;UnlessAsync;(System.Func>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;When;(System.Func,System.Boolean>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;When;(System.Func,System.Boolean>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;When;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;When;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;WhenAsync;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.Task>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;WhenAsync;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.Task>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;WhenAsync;(System.Func>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AbstractValidator<>;false;WhenAsync;(System.Func>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;AssemblyScanner;false;ForEach;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;ChildRules<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Custom<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;CustomAsync<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Equal<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>,System.Collections.IEqualityComparer);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;ForEach<,>;(ServiceStack.FluentValidation.IRuleBuilder>,System.Action,TElement>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;GreaterThan<,>;(ServiceStack.FluentValidation.IRuleBuilder>,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;GreaterThan<,>;(ServiceStack.FluentValidation.IRuleBuilder>,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;GreaterThan<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;GreaterThan<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;GreaterThanOrEqualTo<,>;(ServiceStack.FluentValidation.IRuleBuilder>,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;GreaterThanOrEqualTo<,>;(ServiceStack.FluentValidation.IRuleBuilder>,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;GreaterThanOrEqualTo<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;GreaterThanOrEqualTo<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Length<>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Length<>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Length<>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;LessThan<,>;(ServiceStack.FluentValidation.IRuleBuilder>,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;LessThan<,>;(ServiceStack.FluentValidation.IRuleBuilder>,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;LessThan<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;LessThan<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;LessThanOrEqualTo<,>;(ServiceStack.FluentValidation.IRuleBuilder>,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;LessThanOrEqualTo<,>;(ServiceStack.FluentValidation.IRuleBuilder>,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;LessThanOrEqualTo<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;LessThanOrEqualTo<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Matches<>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Matches<>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func,System.Text.RegularExpressions.RegexOptions);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Matches<>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Must<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Must<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Must<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;MustAsync<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;MustAsync<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;MustAsync<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;NotEqual<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Linq.Expressions.Expression>,System.Collections.IEqualityComparer);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;SetInheritanceValidator<,>;(ServiceStack.FluentValidation.IRuleBuilder,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;Validate<>;(ServiceStack.FluentValidation.IValidator,T,System.Action>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorExtensions;false;ValidateAsync<>;(ServiceStack.FluentValidation.IValidator,T,System.Action>,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;DependentRules<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;OnAnyFailure<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;OnAnyFailure<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;OnFailure<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;OnFailure<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;OnFailure<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;OverrideIndexer<,>;(ServiceStack.FluentValidation.IRuleBuilderInitialCollection,System.Func,TCollectionElement,System.Int32,System.String>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;OverridePropertyName<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;Unless<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func,System.Boolean>,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;Unless<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;UnlessAsync<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func,System.Threading.CancellationToken,System.Threading.Tasks.Task>,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;UnlessAsync<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func>,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;When<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func,System.Boolean>,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;When<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;WhenAsync<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func,System.Threading.CancellationToken,System.Threading.Tasks.Task>,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;WhenAsync<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func>,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;Where<,>;(ServiceStack.FluentValidation.IRuleBuilderInitialCollection,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;WithMessage<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;WithMessage<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;WithName<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;WithSeverity<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;WithSeverity<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;WithState<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;DefaultValidatorOptions;false;WithState<,>;(ServiceStack.FluentValidation.IRuleBuilderOptions,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IConditionBuilder;true;Otherwise;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IRuleBuilder<,>;true;SetValidator<>;(System.Func,System.String[]);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IRuleBuilder<,>;true;SetValidator<>;(System.Func,System.String[]);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IRuleBuilderInitial<,>;true;Transform<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IRuleBuilderInitialCollection<,>;true;Transform<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IServiceStackValidator;true;RemovePropertyRules;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IValidationRule;true;ApplyAsyncCondition;(System.Func>,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IValidationRule;true;ApplyCondition;(System.Func,ServiceStack.FluentValidation.ApplyConditionTo);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IValidationRule;true;ApplySharedAsyncCondition;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;IValidationRule;true;ApplySharedCondition;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;InlineValidator<>;false;Add<>;(System.Func,ServiceStack.FluentValidation.IRuleBuilderOptions>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;PropertyValidatorOptions;false;ApplyAsyncCondition;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;PropertyValidatorOptions;false;ApplyCondition;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;PropertyValidatorOptions;false;SetErrorMessage;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;PropertyValidatorOptions;false;set_AsyncCondition;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;PropertyValidatorOptions;false;set_Condition;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;PropertyValidatorOptions;false;set_CustomStateProvider;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;PropertyValidatorOptions;false;set_SeverityProvider;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidationContext<>;false;CreateWithOptions;(T,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorConfiguration;false;set_DisplayNameResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorConfiguration;false;set_ErrorCodeResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorConfiguration;false;set_MessageFormatterFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorConfiguration;false;set_PropertyNameResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorDescriptor<>;false;GetName;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorOptions;false;set_DisplayNameResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorOptions;false;set_ErrorCodeResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorOptions;false;set_MessageFormatterFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorOptions;false;set_PropertyNameResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorSelectorOptions;false;set_DefaultValidatorSelectorFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorSelectorOptions;false;set_MemberNameValidatorSelectorFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.FluentValidation;ValidatorSelectorOptions;false;set_RulesetValidatorSelectorFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Formats;HtmlFormat;false;set_ResolveTemplate;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host.Handlers;CustomActionHandler;false;CustomActionHandler;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host.Handlers;CustomActionHandler;false;set_Action;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host.Handlers;CustomActionHandlerAsync;false;CustomActionHandlerAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host.Handlers;CustomActionHandlerAsync;false;set_Action;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host.Handlers;CustomResponseHandler;false;CustomResponseHandler;(System.Func,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host.Handlers;CustomResponseHandler;false;set_Action;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host.Handlers;CustomResponseHandlerAsync;false;CustomResponseHandlerAsync;(System.Func>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host.Handlers;CustomResponseHandlerAsync;false;set_Action;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host.Handlers;StaticFileHandler;false;set_ResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ActionContext;false;set_ServiceAction;(ServiceStack.Host.ActionInvokerFn);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ActionInvokerFn;false;BeginInvoke;(System.Object,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ContentTypes;false;SetContentTypeDeserializer;(System.String,ServiceStack.Web.StreamDeserializerDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ContentTypes;false;SetContentTypeSerializer;(System.String,ServiceStack.Web.StreamSerializerDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ContentTypes;false;set_UnknownContentTypeDeserializer;(ServiceStack.Web.StreamDeserializerDelegateAsync);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ContentTypes;false;set_UnknownContentTypeSerializer;(ServiceStack.Web.StreamSerializerDelegateAsync);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;FallbackRestPathDelegate;false;BeginInvoke;(ServiceStack.Web.IHttpRequest,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;HandleGatewayExceptionAsyncDelegate;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,System.Exception,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;HandleGatewayExceptionDelegate;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,System.Exception,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;HandleServiceExceptionAsyncDelegate;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,System.Exception,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;HandleServiceExceptionDelegate;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,System.Exception,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;HandleUncaughtExceptionAsyncDelegate;false;BeginInvoke;(ServiceStack.Web.IRequest,ServiceStack.Web.IResponse,System.String,System.Exception,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;HandleUncaughtExceptionDelegate;false;BeginInvoke;(ServiceStack.Web.IRequest,ServiceStack.Web.IResponse,System.String,System.Exception,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;HttpHandlerResolverDelegate;false;BeginInvoke;(System.String,System.String,System.String,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;IHttpAsyncHandler;true;Middleware;(Microsoft.AspNetCore.Http.HttpContext,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;InstanceExecFn;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,System.Object,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;MetadataTypeExtensions;false;ToMetadataServiceRoutes;(System.Collections.Generic.Dictionary,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;RestPath;false;set_CalculateMatchScore;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;RouteNamingConventionDelegate;false;BeginInvoke;(ServiceStack.Web.IServiceRoutes,System.Type,System.String,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ServiceController;false;ServiceController;(ServiceStack.ServiceStackHost,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ServiceController;false;set_ResolveServicesFn;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;ServiceExecFn;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;StreamSerializerResolverDelegate;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,ServiceStack.Web.IResponse,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;TypedFilter<>;false;TypedFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;TypedFilterAsync<>;false;TypedFilterAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Host;VoidActionInvokerFn;false;BeginInvoke;(System.Object,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Html;Input;false;AddCss;(ServiceStack.InputInfo,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Html;Input;false;For<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Html;Input;false;For<>;(System.Linq.Expressions.Expression>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Html;Input;false;For<>;(System.Linq.Expressions.Expression>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Html;InspectUtils;false;GetFieldNames<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Html;InspectUtils;false;PropertyFromExpression<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Html;MediaRuleCreator;false;Show<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;ApplyToLineContaining;false;ApplyToLineContaining;(System.String,System.Func,System.ReadOnlyMemory>,ServiceStack.Run);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;FileHandler;false;set_VirtualFilesResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;FilesHandler;false;set_VirtualFilesResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;FilesTransformer;false;Clone;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;FilesTransformer;false;CopyAll;(ServiceStack.IO.IVirtualFiles,ServiceStack.IO.IVirtualFiles,System.Boolean,System.Func,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;FilesTransformer;false;CopyAll;(ServiceStack.IO.IVirtualFiles,ServiceStack.IO.IVirtualFiles,System.Boolean,System.Func,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;FilesTransformer;false;Defaults;(System.Nullable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;FilesTransformerUtils;false;Defaults;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;HtmlHandlerFragment;false;HtmlHandlerFragment;(System.String,System.String,System.Func>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;HtmlTokenFragment;false;HtmlTokenFragment;(System.String,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.HtmlModules;MinifyBlock;false;set_Convert;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.IO;IVirtualFiles;true;WriteFiles;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.IO;IVirtualFilesAsync;true;WriteFilesAsync;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.IO;VirtualFilesExtensions;false;CopyFrom;(ServiceStack.IO.IVirtualPathProvider,System.Collections.Generic.IEnumerable,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.IO;VirtualFilesExtensions;false;WriteFiles;(ServiceStack.IO.IVirtualPathProvider,System.Collections.Generic.IEnumerable,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Logging;GenericLogFactory;false;GenericLogFactory;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;BackgroundMqService;false;CreateMessageHandlerFactory<>;(System.Func,System.Object>,System.Action,System.Exception>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;BackgroundMqService;false;CreateMessageHandlerFactory<>;(System.Func,System.Object>,System.Action,System.Exception>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;BackgroundMqService;false;set_RequestFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;BackgroundMqService;false;set_ResponseFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;IMessageHandler;true;ProcessQueue;(ServiceStack.Messaging.IMessageQueueClient,System.String,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;IMessageService;true;RegisterHandler<>;(System.Func,System.Object>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;IMessageService;true;RegisterHandler<>;(System.Func,System.Object>,System.Action,System.Exception>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;IMessageService;true;RegisterHandler<>;(System.Func,System.Object>,System.Action,System.Exception>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;IMessageService;true;RegisterHandler<>;(System.Func,System.Object>,System.Action,System.Exception>,System.Int32);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;IMessageService;true;RegisterHandler<>;(System.Func,System.Object>,System.Action,System.Exception>,System.Int32);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;IMessageService;true;RegisterHandler<>;(System.Func,System.Object>,System.Int32);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageHandler<>;false;MessageHandler;(ServiceStack.Messaging.IMessageService,System.Func,System.Object>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageHandler<>;false;MessageHandler;(ServiceStack.Messaging.IMessageService,System.Func,System.Object>,System.Action,System.Exception>,System.Int32);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageHandler<>;false;MessageHandler;(ServiceStack.Messaging.IMessageService,System.Func,System.Object>,System.Action,System.Exception>,System.Int32);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageHandler<>;false;set_ReplyClientFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageHandlerFactory<>;false;MessageHandlerFactory;(ServiceStack.Messaging.IMessageService,System.Func,System.Object>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageHandlerFactory<>;false;MessageHandlerFactory;(ServiceStack.Messaging.IMessageService,System.Func,System.Object>,System.Action,System.Exception>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageHandlerFactory<>;false;MessageHandlerFactory;(ServiceStack.Messaging.IMessageService,System.Func,System.Object>,System.Action,System.Exception>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageHandlerFactory<>;false;set_RequestFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageHandlerFactory<>;false;set_ResponseFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageQueueClientFactory;false;add_MessageReceived;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;MessageQueueClientFactory;false;remove_MessageReceived;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;RedisMessageProducer;false;RedisMessageProducer;(ServiceStack.Redis.IRedisClientsManager,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;RedisMessageQueueClient;false;RedisMessageQueueClient;(ServiceStack.Redis.IRedisClientsManager,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;RedisMessageQueueClientFactory;false;RedisMessageQueueClientFactory;(ServiceStack.Redis.IRedisClientsManager,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;TransientMessageServiceBase;false;CreateMessageHandlerFactory<>;(System.Func,System.Object>,System.Action,System.Exception>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Messaging;TransientMessageServiceBase;false;CreateMessageHandlerFactory<>;(System.Func,System.Object>,System.Action,System.Exception>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Metadata;IndexOperationsControl;false;set_GetOperation;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.CSharp;CSharpGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.CSharp;CSharpGenerator;false;set_InnerTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.CSharp;CSharpGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.CSharp;CSharpGenerator;false;set_PostPropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.CSharp;CSharpGenerator;false;set_PostTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.CSharp;CSharpGenerator;false;set_PrePropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.CSharp;CSharpGenerator;false;set_PreTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.CSharp;CSharpGenerator;false;set_PropertyTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.CSharp;CSharpGenerator;false;set_TypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Dart;DartGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Dart;DartGenerator;false;set_InnerTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Dart;DartGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Dart;DartGenerator;false;set_PostPropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Dart;DartGenerator;false;set_PostTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Dart;DartGenerator;false;set_PrePropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Dart;DartGenerator;false;set_PreTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Dart;DartGenerator;false;set_PropertyTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Dart;DartGenerator;false;set_TypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.FSharp;FSharpGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.FSharp;FSharpGenerator;false;set_InnerTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.FSharp;FSharpGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.FSharp;FSharpGenerator;false;set_PostPropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.FSharp;FSharpGenerator;false;set_PostTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.FSharp;FSharpGenerator;false;set_PrePropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.FSharp;FSharpGenerator;false;set_PreTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.FSharp;FSharpGenerator;false;set_PropertyTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.FSharp;FSharpGenerator;false;set_TypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Java;JavaGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Java;JavaGenerator;false;set_InnerTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Java;JavaGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Java;JavaGenerator;false;set_PostPropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Java;JavaGenerator;false;set_PostTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Java;JavaGenerator;false;set_PrePropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Java;JavaGenerator;false;set_PreTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Java;JavaGenerator;false;set_PropertyTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Java;JavaGenerator;false;set_TypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Kotlin;KotlinGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Kotlin;KotlinGenerator;false;set_InnerTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Kotlin;KotlinGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Kotlin;KotlinGenerator;false;set_PostPropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Kotlin;KotlinGenerator;false;set_PostTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Kotlin;KotlinGenerator;false;set_PrePropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Kotlin;KotlinGenerator;false;set_PreTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Kotlin;KotlinGenerator;false;set_PropertyTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Kotlin;KotlinGenerator;false;set_TypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_CookedDeclarationTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_CookedTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_DeclarationTypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_FilterTypes;(System.Func,System.Collections.Generic.List>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_InnerTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_IsPropertyOptional;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_PostPropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_PostTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_PrePropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_PreTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_PropertyTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_ReturnMarkerFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Python;PythonGenerator;false;set_TypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_EnumNameStrategy;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_InnerTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_PostPropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_PostTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_PrePropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_PreTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_PropertyTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.Swift;SwiftGenerator;false;set_TypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;CommonJsGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;CommonJsGenerator;false;set_FilterTypes;(System.Func,System.Collections.Generic.List>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;CommonJsGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;CommonJsGenerator;false;set_ReturnTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_CookedDeclarationTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_CookedTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_DeclarationTypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_FilterTypes;(System.Func,System.Collections.Generic.List>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_InnerTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_IsPropertyOptional;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_PostPropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_PostTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_PrePropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_PreTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_PropertyTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_ReturnMarkerFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.TypeScript;TypeScriptGenerator;false;set_TypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.VbNet;VbNetGenerator;false;set_AddCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.VbNet;VbNetGenerator;false;set_InnerTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.VbNet;VbNetGenerator;false;set_InsertCodeFilter;(ServiceStack.NativeTypes.AddCodeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.VbNet;VbNetGenerator;false;set_PostPropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.VbNet;VbNetGenerator;false;set_PostTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.VbNet;VbNetGenerator;false;set_PrePropertyFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.VbNet;VbNetGenerator;false;set_PreTypeFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.VbNet;VbNetGenerator;false;set_PropertyTypeFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes.VbNet;VbNetGenerator;false;set_TypeFilter;(ServiceStack.NativeTypes.TypeFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes;AddCodeDelegate;false;BeginInvoke;(System.Collections.Generic.List,ServiceStack.MetadataTypesConfig,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes;CreateTypeOptions;false;set_ImplementsFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes;INativeTypesMetadata;true;GetMetadataTypes;(ServiceStack.Web.IRequest,ServiceStack.MetadataTypesConfig,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes;LangGeneratorExtensions;false;GenerateSourceCode;(ServiceStack.MetadataTypes,ServiceStack.MetadataTypesConfig,System.String,ServiceStack.Web.IRequest,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes;LangGeneratorExtensions;false;GenerateSourceCode;(System.Collections.Generic.List,System.String,ServiceStack.Web.IRequest,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes;MetadataTypesGenerator;false;GetMetadataTypes;(ServiceStack.Web.IRequest,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NativeTypes;TypeFilterDelegate;false;BeginInvoke;(System.String,System.String[],System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.NetCore;NetCoreHeadersCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| ServiceStack.NetCore;NetCoreQueryStringCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| ServiceStack.OrmLite.Dapper;CustomPropertyTypeMap;false;CustomPropertyTypeMap;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;DynamicParameters;false;Output<>;(T,System.Linq.Expressions.Expression>,System.Nullable,System.Nullable);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper+GridReader;false;Read<,,,,,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper+GridReader;false;Read<,,,,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper+GridReader;false;Read<,,,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper+GridReader;false;Read<,,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper+GridReader;false;Read<,,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper+GridReader;false;Read<,,>;(System.Func,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper+GridReader;false;Read<>;(System.Type[],System.Func,System.String,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper;false;QueryAsync<,,,,,,,>;(System.Data.IDbConnection,ServiceStack.OrmLite.Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper;false;QueryAsync<,,,,,,>;(System.Data.IDbConnection,ServiceStack.OrmLite.Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper;false;QueryAsync<,,,,,>;(System.Data.IDbConnection,ServiceStack.OrmLite.Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper;false;QueryAsync<,,,,>;(System.Data.IDbConnection,ServiceStack.OrmLite.Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper;false;QueryAsync<,,,>;(System.Data.IDbConnection,ServiceStack.OrmLite.Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper;false;QueryAsync<,,>;(System.Data.IDbConnection,ServiceStack.OrmLite.Dapper.CommandDefinition,System.Func,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.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[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper;false;add_QueryCachePurged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Dapper;SqlMapper;false;remove_QueryCachePurged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadApiAsyncLegacy;false;ExistsAsync<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadApiLegacy;false;Exists<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiAsyncLegacy;false;CountAsync<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiAsyncLegacy;false;LoadSelectAsync<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.String[],System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiAsyncLegacy;false;SelectAsync<,>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiAsyncLegacy;false;SelectAsync<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiAsyncLegacy;false;SingleAsync<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiLegacy;false;Count<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiLegacy;false;LoadSelect<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Collections.Generic.IEnumerable);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiLegacy;false;LoadSelect<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiLegacy;false;LoadSelect<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiLegacy;false;Select<,>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiLegacy;false;Select<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteReadExpressionsApiLegacy;false;Single<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteWriteExpressionsApiAsyncLegacy;false;DeleteAsync<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteWriteExpressionsApiAsyncLegacy;false;InsertOnlyAsync<>;(System.Data.IDbConnection,T,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteWriteExpressionsApiAsyncLegacy;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,T,System.Func,ServiceStack.OrmLite.SqlExpression>,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteWriteExpressionsApiLegacy;false;Delete<>;(System.Data.IDbConnection,System.Func,ServiceStack.OrmLite.SqlExpression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteWriteExpressionsApiLegacy;false;InsertOnly<>;(System.Data.IDbConnection,T,System.Func,ServiceStack.OrmLite.SqlExpression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite.Legacy;OrmLiteWriteExpressionsApiLegacy;false;UpdateOnly<>;(System.Data.IDbConnection,T,System.Func,ServiceStack.OrmLite.SqlExpression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;DbDataParameterExtensions;false;AddParam;(ServiceStack.OrmLite.IOrmLiteDialectProvider,System.Data.IDbCommand,System.Object,ServiceStack.OrmLite.FieldDefinition,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;FieldDefinition;false;Clone;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;FieldDefinition;false;set_GetValueFn;(ServiceStack.GetMemberDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;FieldDefinition;false;set_SetValueFn;(ServiceStack.SetMemberDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;GetValueDelegate;false;BeginInvoke;(System.Int32,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteDialectProvider;true;PrepareParameterizedInsertStatement<>;(System.Data.IDbCommand,System.Collections.Generic.ICollection,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteDialectProvider;true;ReaderEach<>;(System.Data.IDataReader,System.Action,Return,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteDialectProvider;true;ReaderEach<>;(System.Data.IDataReader,System.Func,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteDialectProvider;true;ReaderRead<>;(System.Data.IDataReader,System.Func,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteDialectProvider;true;ToAddForeignKeyStatement<,>;(System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.OnFkOption,ServiceStack.OrmLite.OnFkOption,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteDialectProvider;true;ToAddForeignKeyStatement<,>;(System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.OnFkOption,ServiceStack.OrmLite.OnFkOption,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteDialectProvider;true;ToCreateIndexStatement<>;(System.Linq.Expressions.Expression>,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteDialectProvider;true;set_OnOpenConnection;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteDialectProvider;true;set_ParamNameFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteExecFilter;true;Exec;(System.Data.IDbConnection,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteExecFilter;true;Exec;(System.Data.IDbConnection,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteExecFilter;true;Exec;(System.Data.IDbConnection,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteExecFilter;true;Exec;(System.Data.IDbConnection,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteExecFilter;true;Exec<>;(System.Data.IDbConnection,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteExecFilter;true;Exec<>;(System.Data.IDbConnection,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IOrmLiteExecFilter;true;ExecLazy<>;(System.Data.IDbConnection,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IPropertyInvoker;true;set_ConvertValueFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedApi;true;Insert;(System.Object,System.Action,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedApi;true;InsertAll;(System.Collections.IEnumerable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedApi;true;UpdateAll;(System.Collections.IEnumerable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;And<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;And<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;CrossJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;Ensure<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;Ensure<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;FullJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;Join<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;LeftJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;Or<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;Or<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;OrderBy<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;OrderByDescending<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;RightJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;Select<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;Select<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;SelectDistinct<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;SelectDistinct<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;ThenBy<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;ThenByDescending<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;Where<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;Where<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;JoinFormatDelegate;false;BeginInvoke;(ServiceStack.OrmLite.IOrmLiteDialectProvider,ServiceStack.OrmLite.ModelDefinition,System.String,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;ModelDefinition;false;AssertFieldDefinition;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;ModelDefinition;false;GetFieldDefinition;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;ModelDefinition;false;GetFieldDefinition;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;ModelDefinition;false;GetFieldDefinition<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;ModelDefinition;false;GetFieldDefinitionMap;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;ModelDefinition;false;GetOrderedFieldDefinitions;(System.Collections.Generic.ICollection,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_AfterExecFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_BeforeExecFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_ExceptionFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_InsertFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_LoadReferenceSelectFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_OnDbNullFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_OnModelDefinitionInit;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_ParamNameFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_PopulatedObjectFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_SqlExpressionInitFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_SqlExpressionSelectFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_StringFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConfig;false;set_UpdateFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConnectionFactory;false;set_ConnectionFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteConnectionFactory;false;set_OnDispose;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteContext;false;GetOrCreate<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteDialectProviderBase<>;false;set_CreateTableFieldsStrategy;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadApi;false;ExecuteNonQuery;(System.Data.IDbConnection,System.String,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadApi;false;Exists<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadApi;false;LoadSingleById<>;(System.Data.IDbConnection,System.Object,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadApi;false;SqlList<>;(System.Data.IDbConnection,System.String,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ExistsAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;LoadSingleByIdAsync<>;(System.Data.IDbConnection,System.Object,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlListAsync<>;(System.Data.IDbConnection,System.String,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadCommandExtensions;false;AddParam;(System.Data.IDbCommand,System.String,System.Object,System.Data.ParameterDirection,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Action);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Count<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Exec;(System.Data.IDbConnection,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Exec;(System.Data.IDbConnection,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Exec;(System.Data.IDbConnection,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Exec;(System.Data.IDbConnection,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Exec<>;(System.Data.IDbConnection,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Exec<>;(System.Data.IDbConnection,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;ExecLazy<>;(System.Data.IDbConnection,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;From<,>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;From<>;(System.Data.IDbConnection,ServiceStack.OrmLite.TableOptions,System.Action>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;From<>;(System.Data.IDbConnection,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;LoadSelect<,>;(System.Data.IDbConnection,ServiceStack.OrmLite.SqlExpression,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;LoadSelect<>;(System.Data.IDbConnection,ServiceStack.OrmLite.SqlExpression,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;LoadSelect<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;LoadSelect<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;LoadSelect<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.String[]);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Scalar<,>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Scalar<,>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Scalar<,>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Select<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;Single<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;CountAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;LoadSelectAsync<,>;(System.Data.IDbConnection,ServiceStack.OrmLite.SqlExpression,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;LoadSelectAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;LoadSelectAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;LoadSelectAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.String[],System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;ScalarAsync<,>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;ScalarAsync<,>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;ScalarAsync<,>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;SelectAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;SingleAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_ColumnDistinctResultsFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_ColumnResultsFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_DictionaryResultsFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_ExecuteSqlFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_LastInsertIdFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_LongScalarResultFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_LookupResultsFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_RefResultsFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_RefSingleResultFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_ResultsFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_ScalarResultFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_SingleResultFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_SqlCommandFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilter;false;set_SqlFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteResultsFilterExtensions;false;ExecNonQuery;(System.Data.IDbCommand,System.String,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteSchemaApi;false;ColumnExists<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteSchemaApi;false;ColumnExistsAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteSchemaModifyApi;false;AddColumn<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteSchemaModifyApi;false;AddForeignKey<,>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.OnFkOption,ServiceStack.OrmLite.OnFkOption,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteSchemaModifyApi;false;AddForeignKey<,>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.OnFkOption,ServiceStack.OrmLite.OnFkOption,System.String);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteSchemaModifyApi;false;AlterColumn<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteSchemaModifyApi;false;ChangeColumnName<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteSchemaModifyApi;false;CreateIndex<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.String,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteSchemaModifyApi;false;DropColumn<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteUtils;false;EvalFactoryFn<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteUtils;false;set_SqlVerifyFragmentFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;Delete<>;(System.Data.IDbConnection,System.Object,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;Delete<>;(System.Data.IDbConnection,T,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;DeleteById<>;(System.Data.IDbConnection,System.Object,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;DeleteById<>;(System.Data.IDbConnection,System.Object,System.UInt64,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;Insert<>;(System.Data.IDbConnection,System.Action,System.Collections.Generic.Dictionary,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;Insert<>;(System.Data.IDbConnection,System.Action,T[]);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;Insert<>;(System.Data.IDbConnection,T,System.Action,System.Boolean);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;InsertAll<>;(System.Data.IDbConnection,System.Collections.Generic.IEnumerable,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;InsertIntoSelect<>;(System.Data.IDbConnection,ServiceStack.OrmLite.ISqlExpression,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;Update<>;(System.Data.IDbConnection,System.Action,T[]);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;Update<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;Update<>;(System.Data.IDbConnection,T,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;UpdateAll<>;(System.Data.IDbConnection,System.Collections.Generic.IEnumerable,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;DeleteAsync<>;(System.Data.IDbConnection,System.Action,System.Threading.CancellationToken,T[]);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;DeleteAsync<>;(System.Data.IDbConnection,System.Action,T[]);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;DeleteAsync<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;DeleteAsync<>;(System.Data.IDbConnection,System.Object,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;DeleteAsync<>;(System.Data.IDbConnection,T,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;DeleteByIdAsync<>;(System.Data.IDbConnection,System.Object,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;DeleteByIdAsync<>;(System.Data.IDbConnection,System.Object,System.UInt64,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;DeleteByIdsAsync<>;(System.Data.IDbConnection,System.Collections.IEnumerable,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;InsertAllAsync<>;(System.Data.IDbConnection,System.Collections.Generic.IEnumerable,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;InsertAsync<>;(System.Data.IDbConnection,System.Action,System.Collections.Generic.Dictionary,System.Boolean,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;InsertAsync<>;(System.Data.IDbConnection,System.Action,System.Threading.CancellationToken,T[]);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;InsertAsync<>;(System.Data.IDbConnection,T,System.Action,System.Boolean,System.Boolean,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;InsertIntoSelectAsync<>;(System.Data.IDbConnection,ServiceStack.OrmLite.ISqlExpression,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;UpdateAllAsync<>;(System.Data.IDbConnection,System.Collections.Generic.IEnumerable,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;UpdateAsync<>;(System.Data.IDbConnection,System.Action,System.Threading.CancellationToken,T[]);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;UpdateAsync<>;(System.Data.IDbConnection,System.Action,T[]);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;UpdateAsync<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;UpdateAsync<>;(System.Data.IDbConnection,T,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;Delete<>;(System.Data.IDbConnection,ServiceStack.OrmLite.SqlExpression,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;Delete<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;Delete<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;InsertOnly<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;InsertOnly<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Boolean);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;Update<>;(System.Data.IDbConnection,System.Object,System.Linq.Expressions.Expression>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;Update<>;(System.Data.IDbConnection,System.Object,System.Linq.Expressions.Expression>,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;Update<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;Update<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateAdd<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.SqlExpression,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateAdd<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.SqlExpression,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateAdd<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateAdd<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateAdd<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateNonDefaults<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.String,System.Object[],System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.SqlExpression,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.SqlExpression,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.String,System.Collections.Generic.IEnumerable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnly<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.String,System.Collections.Generic.IEnumerable,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnlyFields<>;(System.Data.IDbConnection,T,ServiceStack.OrmLite.SqlExpression,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnlyFields<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnlyFields<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnlyFields<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnlyFields<>;(System.Data.IDbConnection,T,System.String[],System.Linq.Expressions.Expression>,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApi;false;UpdateOnlyFields<>;(System.Data.IDbConnection,T,System.String[],System.Linq.Expressions.Expression>,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;DeleteAsync<>;(System.Data.IDbConnection,ServiceStack.OrmLite.SqlExpression,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;DeleteAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;DeleteAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;DeleteWhereAsync<>;(System.Data.IDbConnection,System.String,System.Object[],System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;InsertOnlyAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;InsertOnlyAsync<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateAddAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.SqlExpression,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateAddAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.SqlExpression,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateAddAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateAddAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateAddAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateAsync<>;(System.Data.IDbConnection,System.Object,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateAsync<>;(System.Data.IDbConnection,System.Object,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateAsync<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateAsync<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateNonDefaultsAsync<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Collections.Generic.Dictionary,System.String,System.Object[],System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.SqlExpression,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.SqlExpression,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.String,System.Collections.Generic.IEnumerable,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyAsync<>;(System.Data.IDbConnection,System.Linq.Expressions.Expression>,System.String,System.Collections.Generic.IEnumerable,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyFieldsAsync<>;(System.Data.IDbConnection,T,ServiceStack.OrmLite.SqlExpression,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyFieldsAsync<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyFieldsAsync<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyFieldsAsync<>;(System.Data.IDbConnection,T,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyFieldsAsync<>;(System.Data.IDbConnection,T,System.String[],System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;OrmLiteWriteExpressionsApiAsync;false;UpdateOnlyFieldsAsync<>;(System.Data.IDbConnection,T,System.String[],System.Linq.Expressions.Expression>,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;PredicateBuilder;false;And<>;(System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;PredicateBuilder;false;And<>;(System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;PredicateBuilder;false;Create<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;PredicateBuilder;false;Not<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;PredicateBuilder;false;Or<>;(System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;PredicateBuilder;false;Or<>;(System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;CrossJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;CrossJoin<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;FullJoin<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;FullJoin<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;FullJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;FullJoin<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;InternalJoin<,>;(System.String,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;InternalJoin<,>;(System.String,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;InternalJoin<,>;(System.String,System.Linq.Expressions.Expression>,ServiceStack.OrmLite.TableOptions);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<,>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<,>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<,>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.TableOptions);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;Join<>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.TableOptions);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<,>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<,>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<,>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.TableOptions);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;LeftJoin<>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.TableOptions);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<,>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<,>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<,>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.TableOptions);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.JoinFormatDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;RightJoin<>;(System.Linq.Expressions.Expression>,ServiceStack.OrmLite.TableOptions);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;set_SelectFilter;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;false;set_SqlFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And;(System.Linq.Expressions.Expression>,System.Object[]);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;And<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Ensure;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Ensure<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Ensure<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Ensure<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Ensure<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Ensure<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;GroupBy;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;GroupBy<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;GroupBy<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;GroupBy<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;GroupBy<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Having;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Having<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Having<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Having<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Insert<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or;(System.Linq.Expressions.Expression>,System.Object[]);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Or<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderBy;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderBy<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderBy<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderBy<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderBy<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderBy<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderByDescending;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderByDescending<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderByDescending<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderByDescending<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderByDescending<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;OrderByDescending<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Select<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;SelectDistinct<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenBy;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenBy<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenBy<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenBy<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenBy<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenBy<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenByDescending;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenByDescending<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenByDescending<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenByDescending<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenByDescending<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;ThenByDescending<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Update;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where;(System.Linq.Expressions.Expression>,System.Object[]);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;Where<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpression<>;true;WithSqlFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpressionExtensions;false;Column<>;(ServiceStack.OrmLite.IOrmLiteDialectProvider,System.Linq.Expressions.Expression>,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;SqlExpressionExtensions;false;Column<>;(ServiceStack.OrmLite.ISqlExpression,System.Linq.Expressions.Expression>,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedApi<>;false;Exec;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedApi<>;false;Exec<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedApi<>;false;Exec<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.OrmLite;UntypedApi<>;false;Update;(System.Object,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Action>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Action>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Action>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Boolean>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Boolean>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Boolean>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Boolean>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Boolean>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Boolean>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Byte[]>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Byte[]>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Byte[]>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Byte[]>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Byte[]>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Byte[]>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.HashSet>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.HashSet>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.HashSet>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.HashSet>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.HashSet>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.HashSet>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Collections.Generic.List>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Double>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Double>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Double>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Double>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Double>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Double>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int32>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int32>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int32>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int32>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int32>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int32>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int64>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int64>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int64>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int64>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int64>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.Int64>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.String>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.String>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.String>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.String>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.String>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,System.String>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,T>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,T>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,T>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,T>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,T>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperation<>;true;QueueCommand;(System.Func,T>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Generic;IRedisTypedQueueableOperationAsync<>;true;QueueCommand;(System.Func,System.Threading.Tasks.ValueTask>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperation;true;CompleteBytesQueuedCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperation;true;CompleteDoubleQueuedCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperation;true;CompleteIntQueuedCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperation;true;CompleteLongQueuedCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperation;true;CompleteMultiBytesQueuedCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperation;true;CompleteMultiStringQueuedCommand;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperation;true;CompleteRedisDataQueuedCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperation;true;CompleteStringQueuedCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperation;true;CompleteVoidQueuedCommand;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperationAsync;true;CompleteBytesQueuedCommandAsync;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperationAsync;true;CompleteDoubleQueuedCommandAsync;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperationAsync;true;CompleteIntQueuedCommandAsync;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperationAsync;true;CompleteLongQueuedCommandAsync;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperationAsync;true;CompleteMultiBytesQueuedCommandAsync;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperationAsync;true;CompleteMultiStringQueuedCommandAsync;(System.Func>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperationAsync;true;CompleteRedisDataQueuedCommandAsync;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperationAsync;true;CompleteStringQueuedCommandAsync;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueCompletableOperationAsync;true;CompleteVoidQueuedCommandAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Action,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Action,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Action,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperation;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>>,System.Action>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>>,System.Action>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>>,System.Action>,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func>,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis.Pipeline;IRedisQueueableOperationAsync;true;QueueCommand;(System.Func,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisClient;true;ExecCachedLua<>;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisClientAsync;true;ExecCachedLuaAsync<>;(System.String,System.Func>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisPubSubServer;true;set_OnDispose;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisPubSubServer;true;set_OnError;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisPubSubServer;true;set_OnEvent;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisPubSubServer;true;set_OnFailover;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisPubSubServer;true;set_OnInit;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisPubSubServer;true;set_OnMessage;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisPubSubServer;true;set_OnStart;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisPubSubServer;true;set_OnStop;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisPubSubServer;true;set_OnUnSubscribe;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscription;true;set_OnMessage;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscription;true;set_OnMessageBytes;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscription;true;set_OnSubscribe;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscription;true;set_OnUnSubscribe;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscriptionAsync;true;add_OnMessageAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscriptionAsync;true;add_OnMessageBytesAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscriptionAsync;true;add_OnSubscribeAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscriptionAsync;true;add_OnUnSubscribeAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscriptionAsync;true;remove_OnMessageAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscriptionAsync;true;remove_OnMessageBytesAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscriptionAsync;true;remove_OnSubscribeAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Redis;IRedisSubscriptionAsync;true;remove_OnUnSubscribeAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Reflection;DelegateFactory+LateBoundMethod;false;BeginInvoke;(System.Object,System.Object[],System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Reflection;DelegateFactory+LateBoundVoid;false;BeginInvoke;(System.Object,System.Object[],System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;DefaultScripts;false;MatchesStringValue;(System.Object,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;ISharpPages;true;OneTimePage;(System.String,System.String,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;JsExpressionUtils;false;GetJsExpressionAndEvaluate;(System.ReadOnlyMemory,ServiceStack.Script.ScriptScopeContext,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;JsExpressionUtils;false;GetJsExpressionAndEvaluateAsync;(System.ReadOnlyMemory,ServiceStack.Script.ScriptScopeContext,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;JsExpressionUtils;false;GetJsExpressionAndEvaluateToBool;(System.ReadOnlyMemory,ServiceStack.Script.ScriptScopeContext,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;JsExpressionUtils;false;GetJsExpressionAndEvaluateToBoolAsync;(System.ReadOnlyMemory,ServiceStack.Script.ScriptScopeContext,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;Lisp+BuiltInFunc;false;BuiltInFunc;(System.String,System.Int32,ServiceStack.Script.Lisp+BuiltInFuncBody);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;Lisp+BuiltInFuncBody;false;BeginInvoke;(ServiceStack.Script.Lisp+Interpreter,System.Object[],System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;Lisp+Cell;false;Walk;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;Lisp+Interpreter;false;Def;(System.String,System.Int32,ServiceStack.Script.Lisp+BuiltInFuncBody);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;Lisp+Interpreter;false;Def;(System.String,System.Int32,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;Lisp+Sym;false;New;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;PageFormat;false;set_EncodeValue;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;PageFormat;false;set_OnExpressionException;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;PageFormat;false;set_OnViewException;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;PageFormat;false;set_ResolveLayout;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;ParseRealNumber;false;BeginInvoke;(System.ReadOnlySpan,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;ScriptContext;false;RemoveBlocks;(System.Predicate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;ScriptContext;false;RemoveFilters;(System.Predicate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;ScriptContext;false;RemovePlugins;(System.Predicate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;ScriptContext;false;set_OnAfterPlugins;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;ScriptContext;false;set_OnRenderException;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;ScriptContext;false;set_OnUnhandledExpression;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Script;ScriptMethodInfo;false;GetScriptMethods;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Support;ActionExecHandler;false;ActionExecHandler;(System.Action,System.Threading.AutoResetEvent);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Support;AdapterBase;false;Execute;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Support;AdapterBase;false;Execute<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Support;AdapterBase;false;ExecuteAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Support;AdapterBase;false;ExecuteAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Support;AdapterBase;false;ExecuteAsync<>;(System.Func>,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Support;AdapterBase;false;ExecuteAsync<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Testing;BasicAppHost;false;set_ConfigFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Testing;BasicAppHost;false;set_ConfigureAppHost;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Testing;BasicAppHost;false;set_ConfigureContainer;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Testing;BasicAppHost;false;set_UseServiceController;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Testing;MockRestGateway;false;set_ResultsFilter;(ServiceStack.Testing.RestGatewayDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Testing;RestGatewayDelegate;false;BeginInvoke;(System.String,System.Type,System.Object,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ConvertInstanceDelegate;false;BeginInvoke;(System.Object,System.Type,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ConvertObjectDelegate;false;BeginInvoke;(System.Object,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DateTimeSerializer;false;set_OnParseErrorFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializationErrorDelegate;false;BeginInvoke;(System.Object,System.Type,System.String,System.String,System.Exception,System.AsyncCallback,System.Object);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeArrayWithElements<,>;false;ParseGenericArray;(System.ReadOnlySpan,ServiceStack.Text.Common.ParseStringSpanDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeArrayWithElements<,>;false;ParseGenericArray;(System.String,ServiceStack.Text.Common.ParseStringDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeArrayWithElements<>+ParseArrayOfElementsDelegate;false;BeginInvoke;(System.ReadOnlySpan,ServiceStack.Text.Common.ParseStringSpanDelegate,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeArrayWithElements<>+ParseArrayOfElementsDelegate;false;BeginInvoke;(System.ReadOnlySpan,ServiceStack.Text.Common.ParseStringSpanDelegate,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeArrayWithElements<>+ParseArrayOfElementsDelegate;false;Invoke;(System.ReadOnlySpan,ServiceStack.Text.Common.ParseStringSpanDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeDictionary<>;false;ParseDictionary<,>;(System.ReadOnlySpan,System.Type,ServiceStack.Text.Common.ParseStringSpanDelegate,ServiceStack.Text.Common.ParseStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeDictionary<>;false;ParseDictionary<,>;(System.ReadOnlySpan,System.Type,ServiceStack.Text.Common.ParseStringSpanDelegate,ServiceStack.Text.Common.ParseStringSpanDelegate);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeDictionary<>;false;ParseDictionary<,>;(System.String,System.Type,ServiceStack.Text.Common.ParseStringDelegate,ServiceStack.Text.Common.ParseStringDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeDictionary<>;false;ParseDictionary<,>;(System.String,System.Type,ServiceStack.Text.Common.ParseStringDelegate,ServiceStack.Text.Common.ParseStringDelegate);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeDictionary<>;false;ParseDictionaryType;(System.ReadOnlySpan,System.Type,System.Type[],ServiceStack.Text.Common.ParseStringSpanDelegate,ServiceStack.Text.Common.ParseStringSpanDelegate);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeDictionary<>;false;ParseDictionaryType;(System.ReadOnlySpan,System.Type,System.Type[],ServiceStack.Text.Common.ParseStringSpanDelegate,ServiceStack.Text.Common.ParseStringSpanDelegate);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeDictionary<>;false;ParseDictionaryType;(System.String,System.Type,System.Type[],ServiceStack.Text.Common.ParseStringDelegate,ServiceStack.Text.Common.ParseStringDelegate);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeDictionary<>;false;ParseDictionaryType;(System.String,System.Type,System.Type[],ServiceStack.Text.Common.ParseStringDelegate,ServiceStack.Text.Common.ParseStringDelegate);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeListWithElements<,>;false;ParseGenericList;(System.ReadOnlySpan,System.Type,ServiceStack.Text.Common.ParseStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeListWithElements<,>;false;ParseGenericList;(System.String,System.Type,ServiceStack.Text.Common.ParseStringDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeListWithElements<>+ParseListDelegate;false;BeginInvoke;(System.ReadOnlySpan,System.Type,ServiceStack.Text.Common.ParseStringSpanDelegate,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeListWithElements<>+ParseListDelegate;false;BeginInvoke;(System.ReadOnlySpan,System.Type,ServiceStack.Text.Common.ParseStringSpanDelegate,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeListWithElements<>+ParseListDelegate;false;Invoke;(System.ReadOnlySpan,System.Type,ServiceStack.Text.Common.ParseStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeListWithElements<>;false;GetListTypeParseFn;(System.Type,System.Type,ServiceStack.Text.Common.ParseStringDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeListWithElements<>;false;GetListTypeParseStringSpanFn;(System.Type,System.Type,ServiceStack.Text.Common.ParseStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;DeserializeStringSpanDelegate;false;BeginInvoke;(System.Type,System.ReadOnlySpan,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ITypeSerializer;true;set_ObjectDeserializer;(ServiceStack.Text.Common.ObjectDeserializerDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;JsWriter;false;WriteDynamic;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ObjectDeserializerDelegate;false;BeginInvoke;(System.ReadOnlySpan,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ParseStringDelegate;false;BeginInvoke;(System.String,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ParseStringSpanDelegate;false;BeginInvoke;(System.ReadOnlySpan,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ToStringDictionaryMethods<,,>;false;WriteGenericIDictionary;(System.IO.TextWriter,System.Collections.Generic.IDictionary,ServiceStack.Text.Common.WriteObjectDelegate,ServiceStack.Text.Common.WriteObjectDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ToStringDictionaryMethods<,,>;false;WriteGenericIDictionary;(System.IO.TextWriter,System.Collections.Generic.IDictionary,ServiceStack.Text.Common.WriteObjectDelegate,ServiceStack.Text.Common.WriteObjectDelegate);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ToStringDictionaryMethods<,,>;false;WriteIDictionary;(System.IO.TextWriter,System.Object,ServiceStack.Text.Common.WriteObjectDelegate,ServiceStack.Text.Common.WriteObjectDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;ToStringDictionaryMethods<,,>;false;WriteIDictionary;(System.IO.TextWriter,System.Object,ServiceStack.Text.Common.WriteObjectDelegate,ServiceStack.Text.Common.WriteObjectDelegate);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Common;WriteObjectDelegate;false;BeginInvoke;(System.IO.TextWriter,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Pools;ObjectPool<>+Factory;false;BeginInvoke;(System.AsyncCallback,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Pools;ObjectPool<>;false;ObjectPool;(ServiceStack.Text.Pools.ObjectPool<>+Factory);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Pools;ObjectPool<>;false;ObjectPool;(ServiceStack.Text.Pools.ObjectPool<>+Factory,System.Int32);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Pools;PooledObject<>;false;PooledObject;(ServiceStack.Text.Pools.ObjectPool,System.Func,T>,System.Action,T>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text.Pools;PooledObject<>;false;PooledObject;(ServiceStack.Text.Pools.ObjectPool,System.Func,T>,System.Action,T>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;Config;false;set_ModelFactory;(ServiceStack.EmptyCtorFactoryDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;Config;false;set_OnDeserializationError;(ServiceStack.Text.Common.DeserializationErrorDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;Config;false;set_ParsePrimitiveFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;Config;false;set_TypeFinder;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;Config;false;set_TypeWriter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;CsvReader;false;ParseFields;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;CsvSerializer;false;set_OnSerialize;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig;false;With;(System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.String,System.String,System.Func,System.Func,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,ServiceStack.EmptyCtorFactoryDelegate,System.String[],System.Nullable);;Argument[20];Argument[20].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig;false;With;(System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.String,System.String,System.Func,System.Func,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,ServiceStack.EmptyCtorFactoryDelegate,System.String[],System.Nullable);;Argument[21];Argument[21].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig;false;With;(System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.String,System.String,System.Func,System.Func,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,System.Nullable,ServiceStack.EmptyCtorFactoryDelegate,System.String[],System.Nullable);;Argument[30];Argument[30].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig;false;set_AllowRuntimeType;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig;false;set_ModelFactory;(ServiceStack.EmptyCtorFactoryDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig;false;set_OnDeserializationError;(ServiceStack.Text.Common.DeserializationErrorDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig;false;set_ParsePrimitiveFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig;false;set_TypeFinder;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig;false;set_TypeWriter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig<>;false;set_DeSerializeFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig<>;false;set_OnDeserializedFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig<>;false;set_OnDeserializingFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig<>;false;set_OnSerializedFn;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig<>;false;set_OnSerializingFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig<>;false;set_RawDeserializeFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig<>;false;set_RawSerializeFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsConfig<>;false;set_SerializeFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsonExtensions;false;ConvertAll<>;(ServiceStack.Text.JsonArrayObjects,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsonExtensions;false;ConvertTo<>;(ServiceStack.Text.JsonObject,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;JsonSerializer;false;set_OnSerialize;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;MemoryProvider;true;Deserialize;(System.IO.Stream,System.Type,ServiceStack.Text.Common.DeserializeStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;MemoryProvider;true;DeserializeAsync;(System.IO.Stream,System.Type,ServiceStack.Text.Common.DeserializeStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager+EventHandler;false;BeginInvoke;(System.AsyncCallback,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager+LargeBufferDiscardedEventHandler;false;BeginInvoke;(ServiceStack.Text.RecyclableMemoryStreamManager+Events+MemoryStreamDiscardReason,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager+StreamLengthReportHandler;false;BeginInvoke;(System.Int64,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager+UsageReportEventHandler;false;BeginInvoke;(System.Int64,System.Int64,System.Int64,System.Int64,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_BlockCreated;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_BlockDiscarded;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_LargeBufferCreated;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_LargeBufferDiscarded;(ServiceStack.Text.RecyclableMemoryStreamManager+LargeBufferDiscardedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_StreamConvertedToArray;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_StreamCreated;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_StreamDisposed;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_StreamFinalized;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_StreamLength;(ServiceStack.Text.RecyclableMemoryStreamManager+StreamLengthReportHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;add_UsageReport;(ServiceStack.Text.RecyclableMemoryStreamManager+UsageReportEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_BlockCreated;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_BlockDiscarded;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_LargeBufferCreated;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_LargeBufferDiscarded;(ServiceStack.Text.RecyclableMemoryStreamManager+LargeBufferDiscardedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_StreamConvertedToArray;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_StreamCreated;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_StreamDisposed;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_StreamFinalized;(ServiceStack.Text.RecyclableMemoryStreamManager+EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_StreamLength;(ServiceStack.Text.RecyclableMemoryStreamManager+StreamLengthReportHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;RecyclableMemoryStreamManager;false;remove_UsageReport;(ServiceStack.Text.RecyclableMemoryStreamManager+UsageReportEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;TypeConfig<>;false;set_OnDeserializing;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Text;TypeSerializer;false;set_OnSerialize;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Validation;ValidationFeature;false;set_ErrorResponseFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.VirtualPath;AbstractVirtualDirectoryBase;true;GetPathToRoot;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.VirtualPath;AbstractVirtualFileBase;true;GetPathToRoot;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IContentTypes;true;Register;(System.String,ServiceStack.Web.StreamSerializerDelegate,ServiceStack.Web.StreamDeserializerDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IContentTypes;true;Register;(System.String,ServiceStack.Web.StreamSerializerDelegate,ServiceStack.Web.StreamDeserializerDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IContentTypes;true;RegisterAsync;(System.String,ServiceStack.Web.StreamSerializerDelegateAsync,ServiceStack.Web.StreamDeserializerDelegateAsync);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IContentTypes;true;RegisterAsync;(System.String,ServiceStack.Web.StreamSerializerDelegateAsync,ServiceStack.Web.StreamDeserializerDelegateAsync);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IHttpResult;true;set_ResultScope;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IRequestLogger;true;set_CurrentDateFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IRequestLogger;true;set_IgnoreFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IRequestLogger;true;set_RequestBodyTrackingFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IRequestLogger;true;set_RequestLogFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IRequestLogger;true;set_ResponseTrackingFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;IRequestLogger;true;set_SkipLogging;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;StreamDeserializerDelegate;false;BeginInvoke;(System.Type,System.IO.Stream,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;StreamDeserializerDelegateAsync;false;BeginInvoke;(System.Type,System.IO.Stream,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;StreamSerializerDelegate;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,System.IO.Stream,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;StreamSerializerDelegateAsync;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,System.IO.Stream,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;StringDeserializerDelegate;false;BeginInvoke;(System.String,System.Type,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;StringSerializerDelegate;false;BeginInvoke;(ServiceStack.Web.IRequest,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;TextDeserializerDelegate;false;BeginInvoke;(System.Type,System.String,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack.Web;TextSerializerDelegate;false;BeginInvoke;(System.Object,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ActionInvoker;false;BeginInvoke;(System.Object,System.Object[],System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ApiAllowableValuesAttribute;false;ApiAllowableValuesAttribute;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ApiAllowableValuesAttribute;false;ApiAllowableValuesAttribute;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostBase;false;set_BeforeNextMiddleware;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostBase;false;set_NetCoreHandler;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostBase;true;ProcessRequest;(Microsoft.AspNetCore.Http.HttpContext,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostExtensions;false;AddIfNotExists<>;(System.Collections.Generic.List,T,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostExtensions;false;ConfigureOperation<>;(ServiceStack.IAppHost,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostExtensions;false;ConfigureOperations;(ServiceStack.IAppHost,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostExtensions;false;ConfigureType<>;(ServiceStack.IAppHost,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostExtensions;false;ConfigureTypes;(ServiceStack.IAppHost,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostExtensions;false;ConfigureTypes;(ServiceStack.IAppHost,System.Action,System.Predicate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostExtensions;false;ConfigureTypes;(ServiceStack.IAppHost,System.Action,System.Predicate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppHostExtensions;false;RegisterRequestBinder<>;(ServiceStack.IAppHost,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;EachOperation;(ServiceStack.AppMetadata,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;EachOperation;(ServiceStack.AppMetadata,System.Action,System.Predicate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;EachOperation;(ServiceStack.AppMetadata,System.Action,System.Predicate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;EachProperty;(ServiceStack.MetadataType,System.Func,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;EachProperty;(ServiceStack.MetadataType,System.Func,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;EachType;(ServiceStack.AppMetadata,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;EachType;(ServiceStack.AppMetadata,System.Action,System.Predicate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;EachType;(ServiceStack.AppMetadata,System.Action,System.Predicate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;Property;(ServiceStack.MetadataType,System.String,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;RemoveProperty;(ServiceStack.MetadataType,System.Predicate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppMetadataUtils;false;ToInput;(ServiceStack.InputAttributeBase,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppUtils;false;DbContextExec<,>;(System.IServiceProvider,System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppUtils;false;DbContextExec<,>;(System.IServiceProvider,System.Func,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppUtils;false;NewScope<>;(System.IServiceProvider,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AppUtils;false;ToObjectDictionary;(System.Data.IDataReader,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncContext;false;ContinueWith;(System.Threading.Tasks.Task,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncContext;false;ContinueWith;(System.Threading.Tasks.Task,System.Action,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_ExceptionFilter;(ServiceStack.ExceptionFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_GlobalRequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_GlobalResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_HttpLogFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_OnAuthenticationRequired;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_OnDownloadProgress;(ServiceStack.ProgressDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_OnUploadProgress;(ServiceStack.ProgressDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_RequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_ResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_ResultsFilter;(ServiceStack.ResultsFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_ResultsFilterResponse;(ServiceStack.ResultsFilterResponseDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_StreamDeserializer;(ServiceStack.Web.StreamDeserializerDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AsyncServiceClient;false;set_StreamSerializer;(ServiceStack.Web.StreamSerializerDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;AuthFeature;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;AuthFeature;(System.Func,ServiceStack.Auth.IAuthProvider[],System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;set_AllowGetAuthenticateRequests;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;set_AuthResponseDecorator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;set_IsValidUsernameFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;set_OnAuthenticateValidate;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;set_RegisterResponseDecorator;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;set_SessionFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;set_ValidateFn;(ServiceStack.Auth.ValidateFn);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AuthFeature;false;set_ValidateRedirectLinks;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoMapping;false;RegisterConverter<,>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoMapping;false;RegisterPopulator<,>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoMappingUtils;false;ThenDo<>;(To,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryData;false;set_GlobalQueryFilter;(ServiceStack.QueryDataFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryDataExtensions;false;And<>;(ServiceStack.IDataQuery,System.Linq.Expressions.Expression>,ServiceStack.QueryCondition,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryDataExtensions;false;MemorySource<>;(ServiceStack.QueryDataContext,System.Func>,ServiceStack.Caching.ICacheClient,System.Nullable,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryDataExtensions;false;Or<>;(ServiceStack.IDataQuery,System.Linq.Expressions.Expression>,ServiceStack.QueryCondition,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryDataFeature;false;AddDataSource;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryDataFeature;false;AddDataSource<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryDataFeature;false;AddDataSource<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryDataFeature;false;RegisterQueryFilter<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryDataFeature;false;set_GenerateServiceFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryDataFeature;false;set_GlobalQueryFilter;(ServiceStack.QueryDataFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;AutoQueryMetadataFeature;false;set_MetadataFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CacheClientExtensions;false;GetOrCreate<>;(ServiceStack.Caching.ICacheClient,System.String,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CacheClientExtensions;false;GetOrCreate<>;(ServiceStack.Caching.ICacheClient,System.String,System.TimeSpan,System.Func);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CacheClientExtensions;false;GetOrCreateAsync<>;(ServiceStack.Caching.ICacheClientAsync,System.String,System.Func>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CacheClientExtensions;false;GetOrCreateAsync<>;(ServiceStack.Caching.ICacheClientAsync,System.String,System.TimeSpan,System.Func>);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CachedExpressionCompiler;false;Compile<,>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ClientConfig;false;set_EncodeDispositionFileName;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CompareTypeUtils;false;Aggregate;(System.Collections.IEnumerable,System.Func,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ContainerExtensions;false;AddSingleton<>;(ServiceStack.IContainer,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ContainerExtensions;false;AddTransient<>;(ServiceStack.IContainer,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ContainerNetCoreExtensions;false;AddScoped<,>;(Funq.Container,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ContainerNetCoreExtensions;false;AddScoped<>;(Funq.Container,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ContainerNetCoreExtensions;false;AddSingleton<,>;(Funq.Container,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ContainerNetCoreExtensions;false;AddSingleton<>;(Funq.Container,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ContainerNetCoreExtensions;false;AddTransient<,>;(Funq.Container,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ContainerNetCoreExtensions;false;AddTransient<>;(Funq.Container,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CsvRequestLogger;false;set_OnReadLastEntryError;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CsvRequestLogger;false;set_OnWriteLogsError;(System.Action,System.Exception>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CustomPlugin;false;CustomPlugin;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CustomPlugin;false;CustomPlugin;(System.String,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CustomPlugin;false;set_OnAfterPluginsLoaded;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CustomPlugin;false;set_OnBeforePluginsLoaded;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CustomPlugin;false;set_OnRegister;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CustomRequestFilter;false;CustomRequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;CustomResponseFilter;false;CustomResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;DataConditionExpression;false;set_FieldGetter;(ServiceStack.GetMemberDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;Defer;false;Defer;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;DictionaryExtensions;false;ConvertAll<,,>;(System.Collections.Generic.IDictionary,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;DictionaryExtensions;false;ForEach<,>;(System.Collections.Generic.Dictionary,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;DictionaryExtensions;false;GetOrAdd<,>;(System.Collections.Generic.Dictionary,K,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;DictionaryExtensions;false;GetValue<,>;(System.Collections.Generic.Dictionary,TKey,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;DictionaryExtensions;false;MoveKey<,>;(System.Collections.Generic.Dictionary,TKey,TKey,System.Func);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;DisposableExtensions;false;Run<>;(T,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EmptyCtorDelegate;false;BeginInvoke;(System.AsyncCallback,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EmptyCtorFactoryDelegate;false;BeginInvoke;(System.Type,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;AllAsync<>;(System.Collections.Generic.IEnumerable>,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;AllAsync<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;AnyAsync<>;(System.Collections.Generic.IEnumerable>,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;AnyAsync<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;Each<,>;(System.Collections.Generic.IDictionary,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;Each<>;(System.Collections.Generic.IEnumerable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;Each<>;(System.Collections.Generic.IEnumerable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;EquivalentTo<,>;(System.Collections.Generic.IDictionary,System.Collections.Generic.IDictionary,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;EquivalentTo<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;EquivalentTo<>;(T[],T[],System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;Map<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;Map<>;(System.Collections.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EnumerableExtensions;false;ToSafeDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EventSubscription;false;set_OnDispose;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EventSubscription;false;set_OnError;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EventSubscription;false;set_OnHungConnection;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EventSubscription;false;set_OnPublish;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EventSubscription;false;set_OnPublishAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EventSubscription;false;set_WriteEvent;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;EventSubscription;false;set_WriteEventAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExceptionFilterDelegate;false;BeginInvoke;(System.Net.WebException,System.Net.WebResponse,System.String,System.Type,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExceptionFilterHttpDelegate;false;BeginInvoke;(System.Net.Http.HttpResponseMessage,System.String,System.Type,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;ExecAll<>;(System.Collections.Generic.IEnumerable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;ExecAllAsync<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;ExecAllReturnFirstAsync<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;ExecAllWithFirstOut<,>;(System.Collections.Generic.IEnumerable,System.Func,TReturn);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;ExecReturnFirstWithResult<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;ExecReturnFirstWithResultAsync<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;RetryOnException;(System.Action,System.Int32);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;RetryOnException;(System.Action,System.Nullable);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;RetryOnExceptionAsync;(System.Func,System.Int32);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;RetryOnExceptionAsync;(System.Func,System.Nullable);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;RetryUntilTrue;(System.Func,System.Nullable);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExecUtils;false;RetryUntilTrueAsync;(System.Func>,System.Nullable);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExpressionUtils;false;AssignedValues<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExpressionUtils;false;GetFieldNames<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExpressionUtils;false;GetMemberExpression<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ExpressionUtils;false;GetMemberName<>;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;FieldAccessor;false;FieldAccessor;(System.Reflection.FieldInfo,ServiceStack.GetMemberDelegate,ServiceStack.SetMemberDelegate,ServiceStack.SetMemberRefDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;FieldAccessor;false;FieldAccessor;(System.Reflection.FieldInfo,ServiceStack.GetMemberDelegate,ServiceStack.SetMemberDelegate,ServiceStack.SetMemberRefDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;FieldAccessor;false;FieldAccessor;(System.Reflection.FieldInfo,ServiceStack.GetMemberDelegate,ServiceStack.SetMemberDelegate,ServiceStack.SetMemberRefDelegate);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;FilesUploadFeature;false;set_FileResult;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;FuncUtils;false;TryExec;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;FuncUtils;false;TryExec<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;FuncUtils;false;TryExec<>;(System.Func,T);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;FuncUtils;false;WaitWhile;(System.Func,System.Int32,System.Int32);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;GenericAppHost;false;set_ConfigFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;GenericAppHost;false;set_ConfigureAppHost;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;GenericAppHost;false;set_ConfigureContainer;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;GetMemberDelegate;false;BeginInvoke;(System.Object,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;GetMemberDelegate<>;false;BeginInvoke;(T,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;GitHubGateway;false;set_GetJsonFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HostConfig;false;set_FallbackRestPath;(ServiceStack.Host.FallbackRestPathDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HostContext;false;ConfigureAppHost;(System.Action,System.Action,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HostContext;false;ConfigureAppHost;(System.Action,System.Action,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HostContext;false;ConfigureAppHost;(System.Action,System.Action,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HostContext;false;ConfigureAppHost;(System.Action,System.Action,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HtmlModule;false;set_FileContentsResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HtmlModuleContext;false;Cache;(System.String,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HtmlModulesFeature;false;Configure;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HtmlModulesFeature;false;set_FileContentsResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpCacheFeature;false;set_CacheControlFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpExtensions;false;EndHttpHandlerRequest;(ServiceStack.Web.IResponse,System.Boolean,System.Boolean,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpExtensions;false;EndHttpHandlerRequestAsync;(ServiceStack.Web.IResponse,System.Boolean,System.Boolean,System.Func);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpExtensions;false;EndRequestAsync;(ServiceStack.Web.IResponse,System.Boolean,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpRequestExtensions;false;EachRequest<>;(ServiceStack.Web.IRequest,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpRequestExtensions;false;ResolveItem;(ServiceStack.Web.IRequest,System.String,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpResponseExtensionsInternal;false;WriteToResponse;(ServiceStack.Web.IResponse,System.Object,ServiceStack.Web.StreamSerializerDelegateAsync,ServiceStack.Web.IRequest,System.Byte[],System.Byte[],System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpResponseExtensionsInternal;false;WriteToResponse;(ServiceStack.Web.IResponse,System.Object,ServiceStack.Web.StreamSerializerDelegateAsync,ServiceStack.Web.IRequest,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpResult;false;HttpResult;(System.Byte[],System.String);;Argument[0];Argument[this];taint;manual | +| ServiceStack;HttpResult;false;HttpResult;(System.IO.Stream,System.String);;Argument[0];Argument[this];taint;manual | +| ServiceStack;HttpResult;false;HttpResult;(System.Object);;Argument[0];Argument[this];taint;manual | +| ServiceStack;HttpResult;false;HttpResult;(System.Object,System.Net.HttpStatusCode);;Argument[0];Argument[this];taint;manual | +| ServiceStack;HttpResult;false;HttpResult;(System.Object,System.String);;Argument[0];Argument[this];taint;manual | +| ServiceStack;HttpResult;false;HttpResult;(System.Object,System.String,System.Net.HttpStatusCode);;Argument[0];Argument[this];taint;manual | +| ServiceStack;HttpResult;false;HttpResult;(System.String,System.String);;Argument[0];Argument[this];taint;manual | +| ServiceStack;HttpUtils;false;DeleteFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;DeleteFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;DeleteFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;DeleteFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetBytesFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetBytesFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetBytesFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetBytesFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetCsvFromUrl;(System.String,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetCsvFromUrl;(System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetCsvFromUrlAsync;(System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetCsvFromUrlAsync;(System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetJsonFromUrl;(System.String,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetJsonFromUrl;(System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetJsonFromUrlAsync;(System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetJsonFromUrlAsync;(System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetStreamFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetStreamFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetStreamFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetStreamFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetStringFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetStringFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetStringFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetStringFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetXmlFromUrl;(System.String,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetXmlFromUrl;(System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetXmlFromUrlAsync;(System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;GetXmlFromUrlAsync;(System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;HeadFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;HeadFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;HeadFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;HeadFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;OptionsFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;OptionsFromUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;OptionsFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;OptionsFromUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchJsonToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchJsonToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchJsonToUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchJsonToUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchJsonToUrlAsync;(System.String,System.Object,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchJsonToUrlAsync;(System.String,System.Object,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchJsonToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchJsonToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchStringToUrl;(System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchStringToUrl;(System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchStringToUrlAsync;(System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchStringToUrlAsync;(System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchToUrl;(System.String,System.Object,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchToUrl;(System.String,System.Object,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchToUrl;(System.String,System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchToUrl;(System.String,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchToUrlAsync;(System.String,System.Object,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchToUrlAsync;(System.String,System.Object,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchToUrlAsync;(System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PatchToUrlAsync;(System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostBytesToUrl;(System.String,System.Byte[],System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostBytesToUrl;(System.String,System.Byte[],System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostBytesToUrlAsync;(System.String,System.Byte[],System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostBytesToUrlAsync;(System.String,System.Byte[],System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostCsvToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostCsvToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostCsvToUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostCsvToUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostCsvToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostCsvToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostFileToUrl;(System.String,System.IO.FileInfo,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostFileToUrl;(System.String,System.IO.FileInfo,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostFileToUrlAsync;(System.String,System.IO.FileInfo,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostFileToUrlAsync;(System.String,System.IO.FileInfo,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostJsonToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostJsonToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostJsonToUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostJsonToUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostJsonToUrlAsync;(System.String,System.Object,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostJsonToUrlAsync;(System.String,System.Object,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostJsonToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostJsonToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostStreamToUrl;(System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostStreamToUrl;(System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostStreamToUrlAsync;(System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostStreamToUrlAsync;(System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostStringToUrl;(System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostStringToUrl;(System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostStringToUrlAsync;(System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostStringToUrlAsync;(System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostToUrl;(System.String,System.Object,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostToUrl;(System.String,System.Object,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostToUrl;(System.String,System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostToUrl;(System.String,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostToUrlAsync;(System.String,System.Object,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostToUrlAsync;(System.String,System.Object,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostToUrlAsync;(System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostToUrlAsync;(System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostXmlToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostXmlToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostXmlToUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostXmlToUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostXmlToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PostXmlToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutBytesToUrl;(System.String,System.Byte[],System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutBytesToUrl;(System.String,System.Byte[],System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutBytesToUrlAsync;(System.String,System.Byte[],System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutBytesToUrlAsync;(System.String,System.Byte[],System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutCsvToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutCsvToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutCsvToUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutCsvToUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutCsvToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutCsvToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutFileToUrl;(System.String,System.IO.FileInfo,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutFileToUrl;(System.String,System.IO.FileInfo,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutFileToUrlAsync;(System.String,System.IO.FileInfo,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutFileToUrlAsync;(System.String,System.IO.FileInfo,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutJsonToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutJsonToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutJsonToUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutJsonToUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutJsonToUrlAsync;(System.String,System.Object,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutJsonToUrlAsync;(System.String,System.Object,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutJsonToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutJsonToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutStreamToUrl;(System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutStreamToUrl;(System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutStreamToUrlAsync;(System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutStreamToUrlAsync;(System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutStringToUrl;(System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutStringToUrl;(System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutStringToUrlAsync;(System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutStringToUrlAsync;(System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutToUrl;(System.String,System.Object,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutToUrl;(System.String,System.Object,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutToUrl;(System.String,System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutToUrl;(System.String,System.String,System.String,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutToUrlAsync;(System.String,System.Object,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutToUrlAsync;(System.String,System.Object,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutToUrlAsync;(System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutToUrlAsync;(System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutXmlToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutXmlToUrl;(System.String,System.Object,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutXmlToUrl;(System.String,System.String,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutXmlToUrl;(System.String,System.String,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutXmlToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;PutXmlToUrlAsync;(System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendBytesToUrl;(System.Net.Http.HttpClient,System.String,System.String,System.Byte[],System.String,System.String,System.Action,System.Action);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendBytesToUrl;(System.Net.Http.HttpClient,System.String,System.String,System.Byte[],System.String,System.String,System.Action,System.Action);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendBytesToUrl;(System.String,System.String,System.Byte[],System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendBytesToUrl;(System.String,System.String,System.Byte[],System.String,System.String,System.Action,System.Action);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendBytesToUrlAsync;(System.Net.Http.HttpClient,System.String,System.String,System.Byte[],System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendBytesToUrlAsync;(System.Net.Http.HttpClient,System.String,System.String,System.Byte[],System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendBytesToUrlAsync;(System.String,System.String,System.Byte[],System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendBytesToUrlAsync;(System.String,System.String,System.Byte[],System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStreamToUrl;(System.Net.Http.HttpClient,System.String,System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStreamToUrl;(System.Net.Http.HttpClient,System.String,System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStreamToUrl;(System.String,System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStreamToUrl;(System.String,System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStreamToUrlAsync;(System.Net.Http.HttpClient,System.String,System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStreamToUrlAsync;(System.Net.Http.HttpClient,System.String,System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStreamToUrlAsync;(System.String,System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStreamToUrlAsync;(System.String,System.String,System.IO.Stream,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStringToUrl;(System.Net.Http.HttpClient,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStringToUrl;(System.Net.Http.HttpClient,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStringToUrl;(System.String,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStringToUrl;(System.String,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStringToUrlAsync;(System.Net.Http.HttpClient,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStringToUrlAsync;(System.Net.Http.HttpClient,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStringToUrlAsync;(System.String,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;SendStringToUrlAsync;(System.String,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;UploadFile;(System.Net.Http.HttpClient,System.Net.Http.HttpRequestMessage,System.IO.Stream,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;UploadFile;(System.Net.Http.HttpClient,System.Net.Http.HttpRequestMessage,System.IO.Stream,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[9];Argument[9].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;UploadFile;(System.Net.Http.HttpRequestMessage,System.IO.Stream,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;UploadFile;(System.Net.Http.HttpRequestMessage,System.IO.Stream,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;UploadFileAsync;(System.Net.Http.HttpClient,System.Net.Http.HttpRequestMessage,System.IO.Stream,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;UploadFileAsync;(System.Net.Http.HttpClient,System.Net.Http.HttpRequestMessage,System.IO.Stream,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[9];Argument[9].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;UploadFileAsync;(System.Net.Http.HttpRequestMessage,System.IO.Stream,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;UploadFileAsync;(System.Net.Http.HttpRequestMessage,System.IO.Stream,System.String,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;With;(System.Net.Http.HttpRequestMessage,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;set_CreateClient;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;HttpUtils;false;set_HttpClientHandlerFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;AfterPluginLoaded<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;ConfigurePlugin<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;PostConfigurePlugin<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedMessageRequestFilter<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedMessageResponseFilter<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedRequestFilter<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedRequestFilter<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedRequestFilterAsync<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedRequestFilterAsync<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedResponseFilter<>;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedResponseFilter<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedResponseFilterAsync<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IAppHost;true;RegisterTypedResponseFilterAsync<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IContainer;true;AddSingleton;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IContainer;true;AddTransient;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IEventSubscription;true;set_OnUnsubscribe;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IEventSubscription;true;set_OnUnsubscribeAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IServerEvents;true;QueueAsyncTask;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;Inspect+Config;false;set_DumpTableFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;Inspect+Config;false;set_VarsFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;InstanceMapper;false;BeginInvoke;(System.Object,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IntExtensions;false;Times;(System.Int32,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IntExtensions;false;Times;(System.Int32,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IntExtensions;false;Times<>;(System.Int32,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IntExtensions;false;Times<>;(System.Int32,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IntExtensions;false;TimesAsync;(System.Int32,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IntExtensions;false;TimesAsync;(System.Int32,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IntExtensions;false;TimesAsync;(System.Int32,System.Func,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;IntExtensions;false;TimesAsync<>;(System.Int32,System.Func>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;ToWebServiceException;(System.Net.Http.HttpResponseMessage,System.Object,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_ExceptionFilter;(ServiceStack.ExceptionFilterHttpDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_GlobalHttpMessageHandlerFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_GlobalRequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_GlobalResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_RequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_ResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_ResultsFilter;(ServiceStack.ResultsFilterHttpDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_ResultsFilterResponse;(ServiceStack.ResultsFilterHttpResponseDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_TypedUrlResolver;(ServiceStack.TypedUrlResolverDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;JsonApiClient;false;set_UrlResolver;(ServiceStack.UrlResolverDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ListExtensions;false;SafeWhere<>;(System.Collections.Generic.List,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_NotifyHeartbeatAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_NotifyJoinAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_NotifyLeaveAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_NotifyUpdateAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_OnError;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_OnRemoveSubscriptionAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_OnSubscribeAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_OnUnsubscribeAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_OnUpdateAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MemoryServerEvents;false;set_Serialize;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MetadataFeature;false;set_DetailPageFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MetadataFeature;false;set_IndexPageFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MetadataFeature;false;set_TagFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MethodInvoker;false;BeginInvoke;(System.Object,System.Object[],System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;MimeTypes;false;set_IsBinaryFilter;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ModelConfig<>;false;Id;(ServiceStack.GetMemberDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ModularStartup;false;ModularStartup;(Microsoft.Extensions.Configuration.IConfiguration,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;NativeTypesFeature;false;ExportAttribute;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;NativeTypesFeature;false;ExportAttribute<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;NetCoreAppHostExtensions;false;ConfigureAppHost;(Microsoft.AspNetCore.Hosting.IWebHostBuilder,System.Action,System.Action,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;NetCoreAppHostExtensions;false;ConfigureAppHost;(Microsoft.AspNetCore.Hosting.IWebHostBuilder,System.Action,System.Action,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;NetCoreAppHostExtensions;false;ConfigureAppHost;(Microsoft.AspNetCore.Hosting.IWebHostBuilder,System.Action,System.Action,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;NetCoreAppHostExtensions;false;ConfigureAppHost;(Microsoft.AspNetCore.Hosting.IWebHostBuilder,System.Action,System.Action,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;NetStandardPclExportClient;false;GetHeader;(System.Net.WebHeaderCollection,System.String,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ObjectActivator;false;BeginInvoke;(System.Object[],System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;OrderByExpression;false;OrderByExpression;(System.String,ServiceStack.GetMemberDelegate,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PclExportClient;false;CreateTimer;(System.Threading.TimerCallback,System.TimeSpan,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PclExportClient;false;GetHeader;(System.Net.WebHeaderCollection,System.String,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PclExportClient;false;RunOnUiThread;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PerfUtils;false;Measure;(System.Action,System.Int32,System.Int32,System.Action,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PerfUtils;false;Measure;(System.Action,System.Int32,System.Int32,System.Action,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PerfUtils;false;Measure;(System.Action,System.Int32,System.Int32,System.Action,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PerfUtils;false;Measure;(System.Action,System.Int32,System.Int32,System.Action,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PerfUtils;false;MeasureFor;(System.Action,System.Int32);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PlatformExtensions;false;ToObjectDictionary;(System.Object,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;Plugins;false;AddToAppMetadata;(ServiceStack.IAppHost,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;Plugins;false;ModifyAppMetadata;(ServiceStack.IAppHost,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PocoDataSource;false;Create<>;(System.Collections.Generic.ICollection,System.Func,System.Int64>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PocoDataSource;false;Create<>;(System.Collections.Generic.IEnumerable,System.Func,System.Int64>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PopulateMemberDelegate;false;BeginInvoke;(System.Object,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PreProcessRequest;false;set_HandleUploadFileAsync;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProcessUtils;false;RunAsync;(System.Diagnostics.ProcessStartInfo,System.Nullable,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProcessUtils;false;RunAsync;(System.Diagnostics.ProcessStartInfo,System.Nullable,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProcessUtils;false;RunShellAsync;(System.String,System.String,System.Nullable,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProcessUtils;false;RunShellAsync;(System.String,System.String,System.Nullable,System.Action,System.Action);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProfilingFeature;false;set_DiagnosticEntryFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProfilingFeature;false;set_ExcludeRequestsFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProfilingFeature;false;set_ResponseTrackingFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProfilingFeature;false;set_TagResolver;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProgressDelegate;false;BeginInvoke;(System.Int64,System.Int64,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PropertyAccessor;false;PropertyAccessor;(System.Reflection.PropertyInfo,ServiceStack.GetMemberDelegate,ServiceStack.SetMemberDelegate);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;PropertyAccessor;false;PropertyAccessor;(System.Reflection.PropertyInfo,ServiceStack.GetMemberDelegate,ServiceStack.SetMemberDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeature;false;ProxyFeature;(System.Func,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeature;false;ProxyFeature;(System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeature;false;set_ProxyRequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeature;false;set_ProxyResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeature;false;set_TransformRequest;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeature;false;set_TransformResponse;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeatureHandler;false;set_ProxyRequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeatureHandler;false;set_ProxyResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeatureHandler;false;set_ResolveUrl;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeatureHandler;false;set_TransformRequest;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ProxyFeatureHandler;false;set_TransformResponse;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;QueryDataFilterDelegate;false;BeginInvoke;(ServiceStack.IDataQuery,ServiceStack.IQueryData,ServiceStack.Web.IRequest,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;QueryStringSerializer;false;set_ComplexTypeStrategy;(ServiceStack.WriteComplexTypeDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RegistrationFeature;false;set_ValidateFn;(ServiceStack.Auth.ValidateFn);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestContext;false;GetOrCreate<>;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestExtensions;false;GetSessionFromSourceAsync;(ServiceStack.Web.IRequest,System.String,System.Func,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestExtensions;false;ToOptimizedResultUsingCache<>;(ServiceStack.Web.IRequest,ServiceStack.Caching.ICacheClient,System.String,System.Func);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestExtensions;false;ToOptimizedResultUsingCache<>;(ServiceStack.Web.IRequest,ServiceStack.Caching.ICacheClient,System.String,System.Nullable,System.Func);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestExtensions;false;ToOptimizedResultUsingCacheAsync<>;(ServiceStack.Web.IRequest,ServiceStack.Caching.ICacheClientAsync,System.String,System.Func,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestExtensions;false;ToOptimizedResultUsingCacheAsync<>;(ServiceStack.Web.IRequest,ServiceStack.Caching.ICacheClientAsync,System.String,System.Nullable,System.Func,System.Threading.CancellationToken);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestLogsFeature;false;set_CurrentDateFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestLogsFeature;false;set_IgnoreFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestLogsFeature;false;set_RequestBodyTrackingFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestLogsFeature;false;set_RequestLogFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestLogsFeature;false;set_ResponseTrackingFilter;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;RequestLogsFeature;false;set_SkipLogging;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ResultsFilterDelegate;false;BeginInvoke;(System.Type,System.String,System.String,System.Object,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ResultsFilterHttpDelegate;false;BeginInvoke;(System.Type,System.String,System.String,System.Object,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ResultsFilterHttpResponseDelegate;false;BeginInvoke;(System.Net.Http.HttpResponseMessage,System.Object,System.String,System.String,System.Object,System.AsyncCallback,System.Object);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ResultsFilterResponseDelegate;false;BeginInvoke;(System.Net.WebResponse,System.Object,System.String,System.String,System.Object,System.AsyncCallback,System.Object);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;SameSiteCookiesServiceCollectionExtensions;false;ConfigureNonBreakingSameSiteCookies;(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventCallback;false;BeginInvoke;(ServiceStack.ServerEventsClient,ServiceStack.ServerEventMessage,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsClient;false;AddListener;(System.String,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsClient;false;HasListener;(System.String,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsClient;false;RemoveListener;(System.String,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsClient;false;set_AllRequestFilters;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsClient;false;set_EventStreamRequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsClient;false;set_HeartbeatRequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsClient;false;set_HttpClientHandlerFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsClient;false;set_ResolveStreamUrl;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsClient;false;set_UnRegisterRequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnConnect;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnCreated;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnDispose;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnError;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnHeartbeatInit;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnHungConnection;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnInit;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnPublish;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnPublishAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnSubscribe;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnSubscribeAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnUnsubscribe;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnUnsubscribeAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_OnUpdateAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_Serialize;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_WriteEvent;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServerEventsFeature;false;set_WriteEventAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;CaptureHttp;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;PrepareWebRequest;(System.String,System.String,System.Object,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;SendStringToUrl;(System.Net.HttpWebRequest,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;SendStringToUrl;(System.Net.HttpWebRequest,System.String,System.String,System.String,System.String,System.Action,System.Action);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;SendStringToUrlAsync;(System.Net.HttpWebRequest,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;SendStringToUrlAsync;(System.Net.HttpWebRequest,System.String,System.String,System.String,System.String,System.Action,System.Action,System.Threading.CancellationToken);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;ToWebServiceException;(System.Net.WebException,System.Func,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;UploadFile;(System.Net.WebRequest,System.IO.Stream,System.String,System.String,System.String,System.Action,System.String,System.String);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_ExceptionFilter;(ServiceStack.ExceptionFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_GlobalRequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_GlobalResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_HttpLogFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_OnAuthenticationRequired;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_OnDownloadProgress;(ServiceStack.ProgressDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_OnUploadProgress;(ServiceStack.ProgressDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_RequestFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_ResponseFilter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_ResultsFilter;(ServiceStack.ResultsFilterDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_ResultsFilterResponse;(ServiceStack.ResultsFilterResponseDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_TypedUrlResolver;(ServiceStack.TypedUrlResolverDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;false;set_UrlResolver;(ServiceStack.UrlResolverDelegate);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;true;HandleResponseException<>;(System.Exception,System.Object,System.String,System.Func,System.Func,TResponse);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientBase;true;HandleResponseException<>;(System.Exception,System.Object,System.String,System.Func,System.Func,TResponse);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceClientExtensions;false;Apply<>;(T,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;ServiceExtensions;false;RunAction<,>;(TService,TRequest,System.Func,ServiceStack.Web.IRequest);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;SetMemberDelegate;false;BeginInvoke;(System.Object,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;SetMemberDelegate<>;false;BeginInvoke;(T,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;SetMemberRefDelegate;false;BeginInvoke;(System.Object,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;SetMemberRefDelegate<>;false;BeginInvoke;(T,System.Object,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;SharpPageHandler;false;set_Filter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;SharpPageHandler;false;set_ValidateFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;StaticActionInvoker;false;BeginInvoke;(System.Object[],System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;StaticMethodInvoker;false;BeginInvoke;(System.Object[],System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;StringExtensions;false;ToCsv<>;(T,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;StringExtensions;false;ToJson<>;(T,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;StringExtensions;false;ToJsv<>;(T,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;SvgFeature;false;set_ValidateFn;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TaskExt;false;RunSync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TaskExt;false;RunSync<>;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TaskExtensions;false;Error;(System.Threading.Tasks.Task,System.Action,System.Boolean,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TaskExtensions;false;Error<>;(System.Threading.Tasks.Task,System.Action,System.Boolean,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TaskExtensions;false;Success;(System.Threading.Tasks.Task,System.Action,System.Boolean,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TaskExtensions;false;Success<>;(System.Threading.Tasks.Task,System.Action,System.Boolean,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TaskUtils;false;EachAsync<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TaskUtils;false;Then;(System.Threading.Tasks.Task,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TaskUtils;false;Then<,>;(System.Threading.Tasks.Task,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TopLevelAppModularStartup;false;Create<>;(THost,Microsoft.Extensions.Configuration.IConfiguration,System.Func>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TopLevelAppModularStartup;false;TopLevelAppModularStartup;(System.Type,ServiceStack.AppHostBase,Microsoft.Extensions.Configuration.IConfiguration,System.Func>);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;TypedUrlResolverDelegate;false;BeginInvoke;(ServiceStack.IServiceClientMeta,System.String,System.Object,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UiFeature;false;set_Configure;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UploadLocation;false;UploadLocation;(System.String,ServiceStack.IO.IVirtualFiles,System.Func,System.String,System.String,System.String[],ServiceStack.FilesUploadOperation,System.Nullable,System.Nullable,System.Nullable,System.Action,System.Action,System.Action,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UploadLocation;false;UploadLocation;(System.String,ServiceStack.IO.IVirtualFiles,System.Func,System.String,System.String,System.String[],ServiceStack.FilesUploadOperation,System.Nullable,System.Nullable,System.Nullable,System.Action,System.Action,System.Action,System.Func);;Argument[10];Argument[10].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UploadLocation;false;UploadLocation;(System.String,ServiceStack.IO.IVirtualFiles,System.Func,System.String,System.String,System.String[],ServiceStack.FilesUploadOperation,System.Nullable,System.Nullable,System.Nullable,System.Action,System.Action,System.Action,System.Func);;Argument[11];Argument[11].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UploadLocation;false;UploadLocation;(System.String,ServiceStack.IO.IVirtualFiles,System.Func,System.String,System.String,System.String[],ServiceStack.FilesUploadOperation,System.Nullable,System.Nullable,System.Nullable,System.Action,System.Action,System.Action,System.Func);;Argument[12];Argument[12].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UploadLocation;false;UploadLocation;(System.String,ServiceStack.IO.IVirtualFiles,System.Func,System.String,System.String,System.String[],ServiceStack.FilesUploadOperation,System.Nullable,System.Nullable,System.Nullable,System.Action,System.Action,System.Action,System.Func);;Argument[13];Argument[13].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UploadLocation;false;set_ResolvePath;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UploadLocation;false;set_ValidateDelete;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UploadLocation;false;set_ValidateDownload;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UploadLocation;false;set_ValidateUpload;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UrlExtensions;false;ToUrl;(System.Object,System.String,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;UrlResolverDelegate;false;BeginInvoke;(ServiceStack.IServiceClientMeta,System.String,System.String,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;WriteComplexTypeDelegate;false;BeginInvoke;(System.IO.TextWriter,System.String,System.Object,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| ServiceStack;X;false;Apply<>;(T,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;X;false;Map<,>;(From,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| ServiceStack;XLinqExtensions;false;GetAttributeValueOrDefault<>;(System.Xml.Linq.XAttribute,System.String,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| ServiceStack;XLinqExtensions;false;GetElementValueOrDefault<>;(System.Xml.Linq.XElement,System.String,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | System.Buffers;ArrayBufferWriter<>;false;GetMemory;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | | System.Buffers;ArrayBufferWriter<>;false;get_WrittenMemory;();;Argument[this];ReturnValue;taint;df-generated | | System.Buffers;BuffersExtensions;false;PositionOf<>;(System.Buffers.ReadOnlySequence,T);;Argument[0];ReturnValue;taint;df-generated | @@ -2993,6 +4932,30 @@ summary | System.Data.Entity;DbSet<>;false;Add;(TEntity);;Argument[0];Argument[this].Element;value;manual | | System.Data.Entity;DbSet<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].WithElement;Argument[this];value;manual | | System.Data.Entity;DbSet<>;false;Attach;(TEntity);;Argument[0];Argument[this].Element;value;manual | +| System.Data.SqlClient;OnChangeEventHandler;false;BeginInvoke;(System.Object,System.Data.SqlClient.SqlNotificationEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlBulkCopy;false;add_SqlRowsCopied;(System.Data.SqlClient.SqlRowsCopiedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlBulkCopy;false;remove_SqlRowsCopied;(System.Data.SqlClient.SqlRowsCopiedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlCommand;false;BeginExecuteNonQuery;(System.AsyncCallback,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlCommand;false;BeginExecuteReader;(System.AsyncCallback,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlCommand;false;BeginExecuteReader;(System.AsyncCallback,System.Object,System.Data.CommandBehavior);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlCommand;false;BeginExecuteXmlReader;(System.AsyncCallback,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlCommand;false;SqlCommand;(System.String);;Argument[0];Argument[this];taint;manual | +| System.Data.SqlClient;SqlCommand;false;SqlCommand;(System.String,System.Data.SqlClient.SqlConnection);;Argument[0];Argument[this];taint;manual | +| System.Data.SqlClient;SqlCommand;false;SqlCommand;(System.String,System.Data.SqlClient.SqlConnection,System.Data.SqlClient.SqlTransaction);;Argument[0];Argument[this];taint;manual | +| System.Data.SqlClient;SqlCommand;false;add_StatementCompleted;(System.Data.StatementCompletedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlCommand;false;remove_StatementCompleted;(System.Data.StatementCompletedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlConnection;false;add_InfoMessage;(System.Data.SqlClient.SqlInfoMessageEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlConnection;false;remove_InfoMessage;(System.Data.SqlClient.SqlInfoMessageEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlDataAdapter;false;add_RowUpdated;(System.Data.SqlClient.SqlRowUpdatedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlDataAdapter;false;add_RowUpdating;(System.Data.SqlClient.SqlRowUpdatingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlDataAdapter;false;remove_RowUpdated;(System.Data.SqlClient.SqlRowUpdatedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlDataAdapter;false;remove_RowUpdating;(System.Data.SqlClient.SqlRowUpdatingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlDependency;false;add_OnChange;(System.Data.SqlClient.OnChangeEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlDependency;false;remove_OnChange;(System.Data.SqlClient.OnChangeEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlInfoMessageEventHandler;false;BeginInvoke;(System.Object,System.Data.SqlClient.SqlInfoMessageEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlRowUpdatedEventHandler;false;BeginInvoke;(System.Object,System.Data.SqlClient.SqlRowUpdatedEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlRowUpdatingEventHandler;false;BeginInvoke;(System.Object,System.Data.SqlClient.SqlRowUpdatingEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.SqlClient;SqlRowsCopiedEventHandler;false;BeginInvoke;(System.Object,System.Data.SqlClient.SqlRowsCopiedEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | System.Data.SqlTypes;SqlBinary;false;Add;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[0];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlBinary;false;Add;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[1];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlBinary;false;Concat;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[0];ReturnValue;taint;df-generated | @@ -3737,6 +5700,167 @@ summary | System.Diagnostics;TraceSource;false;get_Switch;();;Argument[this];ReturnValue;taint;df-generated | | System.Diagnostics;TraceSource;false;remove_Initializing;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | System.Diagnostics;TraceSource;false;set_Switch;(System.Diagnostics.SourceSwitch);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Design;CategoryNameCollection;false;CategoryNameCollection;(System.Drawing.Design.CategoryNameCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Drawing.Design;CategoryNameCollection;false;CategoryNameCollection;(System.String[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Drawing.Design;CategoryNameCollection;false;CopyTo;(System.String[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.Drawing.Design;CategoryNameCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;BitmapData;false;get_Scan0;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;BitmapData;false;set_Scan0;(System.IntPtr);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ColorMap;false;get_NewColor;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ColorMap;false;get_OldColor;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ColorMap;false;set_NewColor;(System.Drawing.Color);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ColorMap;false;set_OldColor;(System.Drawing.Color);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ColorPalette;false;get_Entries;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;Encoder;false;Encoder;(System.Guid);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;Encoder;false;get_Guid;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Byte);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Byte,System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Byte[]);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Byte[],System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int16);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int16[]);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32,System.Drawing.Imaging.EncoderParameterValueType,System.IntPtr);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32,System.Int32);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32,System.Int32,System.Int32);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32,System.Int32,System.Int32,System.Int32);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32[],System.Int32[]);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32[],System.Int32[],System.Int32[],System.Int32[]);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int64);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int64,System.Int64);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int64[]);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int64[],System.Int64[]);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;get_Encoder;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;EncoderParameter;false;set_Encoder;(System.Drawing.Imaging.Encoder);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;EncoderParameters;false;get_Param;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;EncoderParameters;false;set_Param;(System.Drawing.Imaging.EncoderParameter[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Drawing.Imaging;FrameDimension;false;FrameDimension;(System.Guid);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;FrameDimension;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;FrameDimension;false;get_Guid;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;get_Clsid;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;get_CodecName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;get_DllName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;get_FilenameExtension;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;get_FormatDescription;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;get_FormatID;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;get_MimeType;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;get_SignatureMasks;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;get_SignaturePatterns;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;set_Clsid;(System.Guid);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;set_CodecName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;set_DllName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;set_FilenameExtension;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;set_FormatDescription;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;set_FormatID;(System.Guid);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;set_MimeType;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;set_SignatureMasks;(System.Byte[][]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;false;set_SignaturePatterns;(System.Byte[][]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageFormat;false;ImageFormat;(System.Guid);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Imaging;ImageFormat;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;ImageFormat;false;get_Guid;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;Metafile;false;GetHenhmetafile;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;PlayRecordCallback;false;BeginInvoke;(System.Drawing.Imaging.EmfPlusRecordType,System.Int32,System.Int32,System.IntPtr,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;InvalidPrinterException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | +| System.Drawing.Printing;InvalidPrinterException;false;InvalidPrinterException;(System.Drawing.Printing.PrinterSettings);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;MarginsConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;df-generated | +| System.Drawing.Printing;MarginsConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PageSettings;false;Clone;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PageSettings;false;PageSettings;(System.Drawing.Printing.PrinterSettings);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PageSettings;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PageSettings;false;get_Margins;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PageSettings;false;get_PaperSize;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PageSettings;false;get_PaperSource;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PageSettings;false;get_PrintableArea;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PageSettings;false;get_PrinterResolution;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PageSettings;false;get_PrinterSettings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PageSettings;false;set_Margins;(System.Drawing.Printing.Margins);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PageSettings;false;set_PaperSize;(System.Drawing.Printing.PaperSize);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PageSettings;false;set_PaperSource;(System.Drawing.Printing.PaperSource);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PageSettings;false;set_PrinterResolution;(System.Drawing.Printing.PrinterResolution);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PageSettings;false;set_PrinterSettings;(System.Drawing.Printing.PrinterSettings);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PaperSize;false;PaperSize;(System.String,System.Int32,System.Int32);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PaperSize;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PaperSize;false;get_PaperName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PaperSize;false;set_PaperName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PaperSource;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PaperSource;false;get_SourceName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PaperSource;false;set_SourceName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PreviewPageInfo;false;PreviewPageInfo;(System.Drawing.Image,System.Drawing.Size);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PreviewPageInfo;false;PreviewPageInfo;(System.Drawing.Image,System.Drawing.Size);;Argument[1];Argument[this];taint;df-generated | +| System.Drawing.Printing;PreviewPageInfo;false;get_Image;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PreviewPageInfo;false;get_PhysicalSize;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PreviewPrintController;false;GetPreviewPageInfo;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintDocument;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintDocument;false;add_BeginPrint;(System.Drawing.Printing.PrintEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;add_EndPrint;(System.Drawing.Printing.PrintEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;add_PrintPage;(System.Drawing.Printing.PrintPageEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;add_QueryPageSettings;(System.Drawing.Printing.QueryPageSettingsEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;get_DefaultPageSettings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintDocument;false;get_DocumentName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintDocument;false;get_PrintController;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintDocument;false;get_PrinterSettings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintDocument;false;remove_BeginPrint;(System.Drawing.Printing.PrintEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;remove_EndPrint;(System.Drawing.Printing.PrintEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;remove_PrintPage;(System.Drawing.Printing.PrintPageEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;remove_QueryPageSettings;(System.Drawing.Printing.QueryPageSettingsEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;set_DefaultPageSettings;(System.Drawing.Printing.PageSettings);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrintDocument;false;set_DocumentName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrintDocument;false;set_PrintController;(System.Drawing.Printing.PrintController);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrintDocument;false;set_PrinterSettings;(System.Drawing.Printing.PrinterSettings);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrintEventHandler;false;BeginInvoke;(System.Object,System.Drawing.Printing.PrintEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintPageEventArgs;false;PrintPageEventArgs;(System.Drawing.Graphics,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.Printing.PageSettings);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;false;PrintPageEventArgs;(System.Drawing.Graphics,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.Printing.PageSettings);;Argument[1];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;false;PrintPageEventArgs;(System.Drawing.Graphics,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.Printing.PageSettings);;Argument[2];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;false;PrintPageEventArgs;(System.Drawing.Graphics,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.Printing.PageSettings);;Argument[3];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;false;get_Graphics;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;false;get_MarginBounds;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;false;get_PageBounds;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;false;get_PageSettings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrintPageEventHandler;false;BeginInvoke;(System.Object,System.Drawing.Printing.PrintPageEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;false;Add;(System.Drawing.Printing.PaperSize);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;false;GetEnumerator;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;false;PaperSizeCollection;(System.Drawing.Printing.PaperSize[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;false;Add;(System.Drawing.Printing.PaperSource);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;false;GetEnumerator;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;false;PaperSourceCollection;(System.Drawing.Printing.PaperSource[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;false;Add;(System.Drawing.Printing.PrinterResolution);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;false;GetEnumerator;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;false;PrinterResolutionCollection;(System.Drawing.Printing.PrinterResolution[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;false;Add;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;false;GetEnumerator;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;false;StringCollection;(System.String[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | +| System.Drawing.Printing;PrinterSettings;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings;false;get_DefaultPageSettings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings;false;get_PaperSizes;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings;false;get_PaperSources;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings;false;get_PrintFileName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings;false;get_PrinterName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings;false;get_PrinterResolutions;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;PrinterSettings;false;set_PrintFileName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;PrinterSettings;false;set_PrinterName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;QueryPageSettingsEventArgs;false;QueryPageSettingsEventArgs;(System.Drawing.Printing.PageSettings);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;QueryPageSettingsEventArgs;false;get_PageSettings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Printing;QueryPageSettingsEventArgs;false;set_PageSettings;(System.Drawing.Printing.PageSettings);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Printing;QueryPageSettingsEventHandler;false;BeginInvoke;(System.Object,System.Drawing.Printing.QueryPageSettingsEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;StandardPrintController;false;OnStartPage;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintPageEventArgs);;Argument[1];ReturnValue;taint;df-generated | +| System.Drawing;Bitmap;false;Bitmap;(System.String,System.Boolean);;Argument[0];Argument[this];taint;df-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;df-generated | +| System.Drawing;Brush;false;SetNativeBrush;(System.IntPtr);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing;BufferedGraphics;false;get_Graphics;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;BufferedGraphicsContext;false;Allocate;(System.Drawing.Graphics,System.Drawing.Rectangle);;Argument[0];ReturnValue;taint;df-generated | +| System.Drawing;BufferedGraphicsContext;false;Allocate;(System.Drawing.Graphics,System.Drawing.Rectangle);;Argument[1];ReturnValue;taint;df-generated | +| System.Drawing;BufferedGraphicsContext;false;Allocate;(System.IntPtr,System.Drawing.Rectangle);;Argument[0];ReturnValue;taint;df-generated | +| System.Drawing;BufferedGraphicsContext;false;Allocate;(System.IntPtr,System.Drawing.Rectangle);;Argument[1];ReturnValue;taint;df-generated | +| System.Drawing;BufferedGraphicsContext;false;get_MaximumBuffer;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;BufferedGraphicsContext;false;set_MaximumBuffer;(System.Drawing.Size);;Argument[0];Argument[this];taint;df-generated | | System.Drawing;Color;false;FromName;(System.String);;Argument[0];ReturnValue;taint;df-generated | | System.Drawing;Color;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | | System.Drawing;Color;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | @@ -3745,6 +5869,87 @@ summary | System.Drawing;ColorConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | | System.Drawing;ColorTranslator;false;FromHtml;(System.String);;Argument[0];ReturnValue;taint;df-generated | | System.Drawing;ColorTranslator;false;ToHtml;(System.Drawing.Color);;Argument[0];ReturnValue;taint;df-generated | +| System.Drawing;Font;false;Clone;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Font;false;Font;(System.Drawing.Font,System.Drawing.FontStyle);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing;Font;false;Font;(System.Drawing.FontFamily,System.Single,System.Drawing.FontStyle,System.Drawing.GraphicsUnit,System.Byte,System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing;Font;false;Font;(System.String,System.Single,System.Drawing.FontStyle,System.Drawing.GraphicsUnit,System.Byte,System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing;Font;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | +| System.Drawing;Font;false;ToHfont;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Font;false;get_FontFamily;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Font;false;get_OriginalFontName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Font;false;get_SystemFontName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;FontConverter+FontNameConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;df-generated | +| System.Drawing;FontConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | +| System.Drawing;Graphics+DrawImageAbort;false;BeginInvoke;(System.IntPtr,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics+EnumerateMetafileProc;false;BeginInvoke;(System.Drawing.Imaging.EmfPlusRecordType,System.Int32,System.Int32,System.IntPtr,System.Drawing.Imaging.PlayRecordCallback,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics+EnumerateMetafileProc;false;BeginInvoke;(System.Drawing.Imaging.EmfPlusRecordType,System.Int32,System.Int32,System.IntPtr,System.Drawing.Imaging.PlayRecordCallback,System.AsyncCallback,System.Object);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics+EnumerateMetafileProc;false;Invoke;(System.Drawing.Imaging.EmfPlusRecordType,System.Int32,System.Int32,System.IntPtr,System.Drawing.Imaging.PlayRecordCallback);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort,System.Int32);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort,System.Int32);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort,System.IntPtr);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Single,System.Single,System.Single,System.Single,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Single,System.Single,System.Single,System.Single,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort,System.IntPtr);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;FromImage;(System.Drawing.Image);;Argument[0];ReturnValue;taint;df-generated | +| System.Drawing;Graphics;false;GetHdc;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Icon;false;Clone;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Icon;false;FromHandle;(System.IntPtr);;Argument[0];ReturnValue;taint;df-generated | +| System.Drawing;Icon;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | +| System.Drawing;Icon;false;Icon;(System.Drawing.Icon,System.Drawing.Size);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing;Icon;false;Icon;(System.Drawing.Icon,System.Drawing.Size);;Argument[1];Argument[this];taint;df-generated | +| System.Drawing;Icon;false;get_Handle;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Icon;false;get_Size;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Image+GetThumbnailImageAbort;false;BeginInvoke;(System.AsyncCallback,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Image;false;FromFile;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.Drawing;Image;false;FromFile;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;df-generated | +| System.Drawing;Image;false;GetThumbnailImage;(System.Int32,System.Int32,System.Drawing.Image+GetThumbnailImageAbort,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Image;false;get_Tag;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Image;false;set_Tag;(System.Object);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing;ImageAnimator;false;Animate;(System.Drawing.Image,System.EventHandler);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Drawing;ImageAnimator;false;StopAnimate;(System.Drawing.Image,System.EventHandler);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Drawing;ImageFormatConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | +| System.Drawing;Pen;false;Pen;(System.Drawing.Color,System.Single);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing;Pen;false;get_Color;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Pen;false;get_CustomEndCap;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;Pen;false;set_Color;(System.Drawing.Color);;Argument[0];Argument[this];taint;df-generated | | System.Drawing;PointConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;df-generated | | System.Drawing;PointConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | | System.Drawing;Rectangle;false;Inflate;(System.Drawing.Rectangle,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;df-generated | @@ -3755,6 +5960,14 @@ summary | System.Drawing;SizeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | | System.Drawing;SizeFConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;df-generated | | System.Drawing;SizeFConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | +| System.Drawing;SolidBrush;false;SolidBrush;(System.Drawing.Color);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing;SolidBrush;false;get_Color;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;SolidBrush;false;set_Color;(System.Drawing.Color);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing;ToolboxBitmapAttribute;false;GetImage;(System.Object);;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;ToolboxBitmapAttribute;false;GetImage;(System.Object,System.Boolean);;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;ToolboxBitmapAttribute;false;GetImage;(System.Type);;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;ToolboxBitmapAttribute;false;GetImage;(System.Type,System.Boolean);;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing;ToolboxBitmapAttribute;false;GetImage;(System.Type,System.String,System.Boolean);;Argument[this];ReturnValue;taint;df-generated | | System.Dynamic;BindingRestrictions;false;GetExpressionRestriction;(System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;df-generated | | System.Dynamic;BindingRestrictions;false;GetInstanceRestriction;(System.Linq.Expressions.Expression,System.Object);;Argument[0];ReturnValue;taint;df-generated | | System.Dynamic;BindingRestrictions;false;GetInstanceRestriction;(System.Linq.Expressions.Expression,System.Object);;Argument[1];ReturnValue;taint;df-generated | diff --git a/csharp/ql/test/library-tests/dataflow/library/options b/csharp/ql/test/library-tests/dataflow/library/options index 6fb355b88a5..20aa36df6db 100644 --- a/csharp/ql/test/library-tests/dataflow/library/options +++ b/csharp/ql/test/library-tests/dataflow/library/options @@ -1,5 +1,8 @@ semmle-extractor-options: /nostdlib /noconfig semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/Newtonsoft.Json/13.0.3/Newtonsoft.Json.csproj -semmle-extractor-options: --load-sources-from-project:../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/Dapper/2.0.90/Dapper.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/ServiceStack/6.2.0/ServiceStack.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/ServiceStack.OrmLite.SqlServer/6.2.0/ServiceStack.OrmLite.SqlServer.csproj semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs semmle-extractor-options: ${testdir}/../../../resources/stubs/EntityFramework.cs From 2a33a86c9d54861a856035235f80e75cc6866085 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 3 Nov 2023 09:00:28 +0100 Subject: [PATCH 048/122] C#: Merge `ExternalFlow.qll` and `ExternalFlowExtensions.qll`, and move to `internal` --- .../dataflow/ExternalFlowExtensions.qll | 34 ------------- .../dataflow/{ => internal}/ExternalFlow.qll | 50 +++++++++++++------ .../internal/FlowSummaryImplSpecific.qll | 2 +- .../HardcodedSymmetricEncryptionKey.qll | 2 +- .../security/dataflow/CodeInjectionQuery.qll | 2 +- .../dataflow/CommandInjectionQuery.qll | 2 +- .../security/dataflow/LDAPInjectionQuery.qll | 2 +- .../security/dataflow/LogForgingQuery.qll | 2 +- .../security/dataflow/SqlInjectionQuery.qll | 2 +- .../security/dataflow/UrlRedirectQuery.qll | 2 +- .../csharp/security/dataflow/XSSSinks.qll | 2 +- .../flowsinks/ExternalLocationSink.qll | 2 +- .../security/dataflow/flowsinks/Html.qll | 2 +- .../security/dataflow/flowsources/Local.qll | 2 +- .../security/dataflow/flowsources/Remote.qll | 2 +- .../security/dataflow/flowsources/Stored.qll | 2 +- .../Metrics/Summaries/FrameworkCoverage.ql | 2 +- csharp/ql/src/Telemetry/ExternalApi.qll | 2 +- csharp/ql/src/meta/frameworks/Coverage.ql | 2 +- .../utils/modelconverter/ExtractNeutrals.ql | 2 +- .../src/utils/modelconverter/ExtractSinks.ql | 2 +- .../utils/modelconverter/ExtractSources.ql | 2 +- .../utils/modelconverter/ExtractSummaries.ql | 2 +- .../ApplicationModeEndpointsQuery.qll | 2 +- .../FrameworkModeEndpointsQuery.qll | 2 +- .../internal/CaptureModelsSpecific.qll | 2 +- .../dataflow/external-models/ExternalFlow.ql | 2 +- .../dataflow/external-models/sinks.ql | 2 +- .../dataflow/external-models/srcs.ql | 2 +- .../dataflow/external-models/steps.ql | 2 +- .../external-models/validatemodels.ql | 2 +- .../dataflow/library/FlowSummariesFiltered.ql | 2 +- .../EntityFramework/FlowSummaries.ql | 2 +- .../test/library-tests/frameworks/sql/Sql1.ql | 2 +- 34 files changed, 66 insertions(+), 82 deletions(-) delete mode 100644 csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlowExtensions.qll rename csharp/ql/lib/semmle/code/csharp/dataflow/{ => internal}/ExternalFlow.qll (93%) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlowExtensions.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlowExtensions.qll deleted file mode 100644 index 3d1f6de268a..00000000000 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlowExtensions.qll +++ /dev/null @@ -1,34 +0,0 @@ -/** - * This module provides extensible predicates for defining MaD models. - */ - -/** - * Holds if a source model exists for the given parameters. - */ -extensible predicate sourceModel( - string namespace, string type, boolean subtypes, string name, string signature, string ext, - string output, string kind, string provenance -); - -/** - * Holds if a sink model exists for the given parameters. - */ -extensible predicate sinkModel( - string namespace, string type, boolean subtypes, string name, string signature, string ext, - string input, string kind, string provenance -); - -/** - * Holds if a summary model exists for the given parameters. - */ -extensible predicate summaryModel( - string namespace, string type, boolean subtypes, string name, string signature, string ext, - string input, string output, string kind, string provenance -); - -/** - * Holds if a neutral model exists for the given parameters. - */ -extensible predicate neutralModel( - string namespace, string type, string name, string signature, string kind, string provenance -); diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlow.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll similarity index 93% rename from csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlow.qll rename to csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll index 7f09f70014b..995c598930d 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlow.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll @@ -87,27 +87,45 @@ */ import csharp -private import ExternalFlowExtensions as Extensions -private import internal.AccessPathSyntax -private import internal.DataFlowDispatch -private import internal.DataFlowPrivate -private import internal.DataFlowPublic -private import internal.FlowSummaryImpl::Public -private import internal.FlowSummaryImpl::Private::External -private import internal.FlowSummaryImplSpecific +private import AccessPathSyntax +private import DataFlowDispatch +private import DataFlowPrivate +private import DataFlowPublic +private import FlowSummaryImpl::Public +private import FlowSummaryImpl::Private::External +private import FlowSummaryImplSpecific private import codeql.mad.ModelValidation as SharedModelVal -/** Holds if a source model exists for the given parameters. */ -predicate sourceModel = Extensions::sourceModel/9; +/** + * Holds if a source model exists for the given parameters. + */ +extensible predicate sourceModel( + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string output, string kind, string provenance +); -/** Holds if a sink model exists for the given parameters. */ -predicate sinkModel = Extensions::sinkModel/9; +/** + * Holds if a sink model exists for the given parameters. + */ +extensible predicate sinkModel( + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string input, string kind, string provenance +); -/** Holds if a summary model exists for the given parameters. */ -predicate summaryModel = Extensions::summaryModel/10; +/** + * Holds if a summary model exists for the given parameters. + */ +extensible predicate summaryModel( + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string input, string output, string kind, string provenance +); -/** Holds if a neutral model exists for the given parameters. */ -predicate neutralModel = Extensions::neutralModel/6; +/** + * Holds if a neutral model exists for the given parameters. + */ +extensible predicate neutralModel( + string namespace, string type, string name, string signature, string kind, string provenance +); private predicate relevantNamespace(string namespace) { sourceModel(namespace, _, _, _, _, _, _, _, _) or 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 c57808804b0..2032411a814 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImplSpecific.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImplSpecific.qll @@ -12,7 +12,7 @@ private import DataFlowImplCommon private import FlowSummaryImpl::Private private import FlowSummaryImpl::Public private import semmle.code.csharp.Unification -private import semmle.code.csharp.dataflow.ExternalFlow +private import ExternalFlow private import semmle.code.csharp.dataflow.FlowSummary as FlowSummary /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/cryptography/HardcodedSymmetricEncryptionKey.qll b/csharp/ql/lib/semmle/code/csharp/security/cryptography/HardcodedSymmetricEncryptionKey.qll index 9fdc6dc88be..b33bc3dce99 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/cryptography/HardcodedSymmetricEncryptionKey.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/cryptography/HardcodedSymmetricEncryptionKey.qll @@ -4,7 +4,7 @@ */ import csharp -private import semmle.code.csharp.dataflow.ExternalFlow +private import semmle.code.csharp.dataflow.internal.ExternalFlow module HardcodedSymmetricEncryptionKey { private import semmle.code.csharp.frameworks.system.security.cryptography.SymmetricAlgorithm diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll index cd035de9414..9a5b6f38cea 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll @@ -7,7 +7,7 @@ private import semmle.code.csharp.security.dataflow.flowsources.Remote private import semmle.code.csharp.security.dataflow.flowsources.Local private import semmle.code.csharp.frameworks.system.codedom.Compiler private import semmle.code.csharp.security.Sanitizers -private import semmle.code.csharp.dataflow.ExternalFlow +private import semmle.code.csharp.dataflow.internal.ExternalFlow /** * A data flow source for user input treated as code vulnerabilities. diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll index 90615faac9f..b174405443f 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll @@ -6,7 +6,7 @@ import csharp private import semmle.code.csharp.security.dataflow.flowsources.Remote private import semmle.code.csharp.frameworks.system.Diagnostics private import semmle.code.csharp.security.Sanitizers -private import semmle.code.csharp.dataflow.ExternalFlow +private import semmle.code.csharp.dataflow.internal.ExternalFlow /** * A source specific to command injection vulnerabilities. diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll index c059cb7523c..25134fbcb12 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll @@ -8,7 +8,7 @@ private import semmle.code.csharp.security.dataflow.flowsources.Remote private import semmle.code.csharp.frameworks.system.DirectoryServices private import semmle.code.csharp.frameworks.system.directoryservices.Protocols private import semmle.code.csharp.security.Sanitizers -private import semmle.code.csharp.dataflow.ExternalFlow +private import semmle.code.csharp.dataflow.internal.ExternalFlow /** * A data flow source for unvalidated user input that is used to construct LDAP queries. diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll index e219b5db589..800e86457b4 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll @@ -8,7 +8,7 @@ private import semmle.code.csharp.frameworks.System private import semmle.code.csharp.frameworks.system.text.RegularExpressions private import semmle.code.csharp.security.Sanitizers private import semmle.code.csharp.security.dataflow.flowsinks.ExternalLocationSink -private import semmle.code.csharp.dataflow.ExternalFlow +private import semmle.code.csharp.dataflow.internal.ExternalFlow /** * A data flow source for untrusted user input used in log entries. diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll index 61b2491753a..7500ac7a994 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll @@ -7,7 +7,7 @@ private import semmle.code.csharp.security.dataflow.flowsources.Remote private import semmle.code.csharp.security.dataflow.flowsources.Local private import semmle.code.csharp.frameworks.Sql private import semmle.code.csharp.security.Sanitizers -private import semmle.code.csharp.dataflow.ExternalFlow +private import semmle.code.csharp.dataflow.internal.ExternalFlow /** * A source specific to SQL injection vulnerabilities. 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 2def16decd9..31c14362d38 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll @@ -9,7 +9,7 @@ private import semmle.code.csharp.frameworks.system.Web private import semmle.code.csharp.frameworks.system.web.Mvc private import semmle.code.csharp.security.Sanitizers private import semmle.code.csharp.frameworks.microsoft.AspNetCore -private import semmle.code.csharp.dataflow.ExternalFlow +private import semmle.code.csharp.dataflow.internal.ExternalFlow /** * A data flow source for unvalidated URL redirect vulnerabilities. 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 65ac1687714..4e908bf5dfe 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/XSSSinks.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/XSSSinks.qll @@ -9,7 +9,7 @@ private import semmle.code.csharp.frameworks.system.Web private import semmle.code.csharp.frameworks.system.web.UI private import semmle.code.csharp.security.dataflow.flowsinks.Html private import semmle.code.csharp.security.dataflow.flowsinks.Remote -private import semmle.code.csharp.dataflow.ExternalFlow +private import semmle.code.csharp.dataflow.internal.ExternalFlow private import semmle.code.csharp.frameworks.ServiceStack::XSS /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsinks/ExternalLocationSink.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsinks/ExternalLocationSink.qll index 1baeff7641b..5b76d8a2dcb 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsinks/ExternalLocationSink.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsinks/ExternalLocationSink.qll @@ -7,7 +7,7 @@ private import Remote private import semmle.code.csharp.commons.Loggers private import semmle.code.csharp.frameworks.system.Web private import semmle.code.csharp.frameworks.system.IO -private import semmle.code.csharp.dataflow.ExternalFlow +private import semmle.code.csharp.dataflow.internal.ExternalFlow /** * An external location sink. 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 318e298ae1f..6889d6c5b89 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 @@ -13,7 +13,7 @@ private import semmle.code.csharp.frameworks.system.web.UI private import semmle.code.csharp.frameworks.system.web.ui.WebControls private import semmle.code.csharp.frameworks.system.windows.Forms private import semmle.code.csharp.security.dataflow.flowsources.Remote -private import semmle.code.csharp.dataflow.ExternalFlow +private import semmle.code.csharp.dataflow.internal.ExternalFlow private import semmle.code.asp.AspNet /** 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 3d57c45e06f..89e7fe5d091 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 @@ -4,7 +4,7 @@ import csharp private import semmle.code.csharp.frameworks.system.windows.Forms -private import semmle.code.csharp.dataflow.ExternalFlow +private import semmle.code.csharp.dataflow.internal.ExternalFlow /** A data flow source of local data. */ abstract class LocalFlowSource extends DataFlow::Node { 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 404730ac4c4..f1bfee775e5 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 @@ -12,7 +12,7 @@ private import semmle.code.csharp.frameworks.system.web.ui.WebControls private import semmle.code.csharp.frameworks.WCF private import semmle.code.csharp.frameworks.microsoft.Owin private import semmle.code.csharp.frameworks.microsoft.AspNetCore -private import semmle.code.csharp.dataflow.ExternalFlow +private import semmle.code.csharp.dataflow.internal.ExternalFlow /** A data flow source of remote user input. */ abstract class RemoteFlowSource extends DataFlow::Node { diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Stored.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Stored.qll index db1f1241548..e310f7a0cce 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Stored.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Stored.qll @@ -3,7 +3,7 @@ */ import csharp -private import semmle.code.csharp.dataflow.ExternalFlow +private import semmle.code.csharp.dataflow.internal.ExternalFlow private import semmle.code.csharp.frameworks.system.data.Common private import semmle.code.csharp.frameworks.system.data.Entity private import semmle.code.csharp.frameworks.EntityFramework diff --git a/csharp/ql/src/Metrics/Summaries/FrameworkCoverage.ql b/csharp/ql/src/Metrics/Summaries/FrameworkCoverage.ql index 5a070076d26..274e970b0b6 100644 --- a/csharp/ql/src/Metrics/Summaries/FrameworkCoverage.ql +++ b/csharp/ql/src/Metrics/Summaries/FrameworkCoverage.ql @@ -7,7 +7,7 @@ */ import csharp -import semmle.code.csharp.dataflow.ExternalFlow +import semmle.code.csharp.dataflow.internal.ExternalFlow from string namespaceAndType, int rows where diff --git a/csharp/ql/src/Telemetry/ExternalApi.qll b/csharp/ql/src/Telemetry/ExternalApi.qll index baa076ade2f..83e6463f5e1 100644 --- a/csharp/ql/src/Telemetry/ExternalApi.qll +++ b/csharp/ql/src/Telemetry/ExternalApi.qll @@ -2,10 +2,10 @@ private import csharp private import semmle.code.csharp.dispatch.Dispatch -private import semmle.code.csharp.dataflow.ExternalFlow private import semmle.code.csharp.dataflow.FlowSummary private import semmle.code.csharp.dataflow.internal.DataFlowPrivate private import semmle.code.csharp.dataflow.internal.DataFlowDispatch as DataFlowDispatch +private import semmle.code.csharp.dataflow.internal.ExternalFlow private import semmle.code.csharp.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl private import semmle.code.csharp.dataflow.internal.TaintTrackingPrivate private import semmle.code.csharp.security.dataflow.flowsources.Remote diff --git a/csharp/ql/src/meta/frameworks/Coverage.ql b/csharp/ql/src/meta/frameworks/Coverage.ql index b4e210c79ed..1725cc894f0 100644 --- a/csharp/ql/src/meta/frameworks/Coverage.ql +++ b/csharp/ql/src/meta/frameworks/Coverage.ql @@ -7,7 +7,7 @@ */ import csharp -import semmle.code.csharp.dataflow.ExternalFlow +import semmle.code.csharp.dataflow.internal.ExternalFlow from string namespace, int pkgs, string kind, string part, int n where modelCoverage(namespace, pkgs, kind, part, n) diff --git a/csharp/ql/src/utils/modelconverter/ExtractNeutrals.ql b/csharp/ql/src/utils/modelconverter/ExtractNeutrals.ql index 8d5c4499402..7940f319c02 100644 --- a/csharp/ql/src/utils/modelconverter/ExtractNeutrals.ql +++ b/csharp/ql/src/utils/modelconverter/ExtractNeutrals.ql @@ -5,7 +5,7 @@ */ import csharp -import semmle.code.csharp.dataflow.ExternalFlow +import semmle.code.csharp.dataflow.internal.ExternalFlow from string package, string type, string name, string signature, string kind, string provenance where diff --git a/csharp/ql/src/utils/modelconverter/ExtractSinks.ql b/csharp/ql/src/utils/modelconverter/ExtractSinks.ql index b2ab7ca8546..58302da2d04 100644 --- a/csharp/ql/src/utils/modelconverter/ExtractSinks.ql +++ b/csharp/ql/src/utils/modelconverter/ExtractSinks.ql @@ -5,7 +5,7 @@ */ import csharp -import semmle.code.csharp.dataflow.ExternalFlow +import semmle.code.csharp.dataflow.internal.ExternalFlow from string namespace, string type, boolean subtypes, string name, string signature, string ext, diff --git a/csharp/ql/src/utils/modelconverter/ExtractSources.ql b/csharp/ql/src/utils/modelconverter/ExtractSources.ql index 6e19315eecd..0478f47937a 100644 --- a/csharp/ql/src/utils/modelconverter/ExtractSources.ql +++ b/csharp/ql/src/utils/modelconverter/ExtractSources.ql @@ -5,7 +5,7 @@ */ import csharp -import semmle.code.csharp.dataflow.ExternalFlow +import semmle.code.csharp.dataflow.internal.ExternalFlow from string namespace, string type, boolean subtypes, string name, string signature, string ext, diff --git a/csharp/ql/src/utils/modelconverter/ExtractSummaries.ql b/csharp/ql/src/utils/modelconverter/ExtractSummaries.ql index 9991b8ddceb..26239226a8c 100644 --- a/csharp/ql/src/utils/modelconverter/ExtractSummaries.ql +++ b/csharp/ql/src/utils/modelconverter/ExtractSummaries.ql @@ -5,7 +5,7 @@ */ import csharp -import semmle.code.csharp.dataflow.ExternalFlow +import semmle.code.csharp.dataflow.internal.ExternalFlow from string namespace, string type, boolean subtypes, string name, string signature, string ext, diff --git a/csharp/ql/src/utils/modeleditor/ApplicationModeEndpointsQuery.qll b/csharp/ql/src/utils/modeleditor/ApplicationModeEndpointsQuery.qll index 74677778a7c..de64071fac0 100644 --- a/csharp/ql/src/utils/modeleditor/ApplicationModeEndpointsQuery.qll +++ b/csharp/ql/src/utils/modeleditor/ApplicationModeEndpointsQuery.qll @@ -1,5 +1,5 @@ private import csharp -private import semmle.code.csharp.dataflow.ExternalFlow +private import semmle.code.csharp.dataflow.internal.ExternalFlow private import semmle.code.csharp.dataflow.internal.DataFlowDispatch as DataFlowDispatch private import semmle.code.csharp.dataflow.internal.DataFlowPrivate private import semmle.code.csharp.dataflow.internal.TaintTrackingPrivate diff --git a/csharp/ql/src/utils/modeleditor/FrameworkModeEndpointsQuery.qll b/csharp/ql/src/utils/modeleditor/FrameworkModeEndpointsQuery.qll index b83060ed17f..31eb497b44c 100644 --- a/csharp/ql/src/utils/modeleditor/FrameworkModeEndpointsQuery.qll +++ b/csharp/ql/src/utils/modeleditor/FrameworkModeEndpointsQuery.qll @@ -1,5 +1,5 @@ private import csharp -private import semmle.code.csharp.dataflow.ExternalFlow +private import semmle.code.csharp.dataflow.internal.ExternalFlow private import semmle.code.csharp.frameworks.Test private import ModelEditor diff --git a/csharp/ql/src/utils/modelgenerator/internal/CaptureModelsSpecific.qll b/csharp/ql/src/utils/modelgenerator/internal/CaptureModelsSpecific.qll index 29ab8a2c1dc..47f3e6acd81 100644 --- a/csharp/ql/src/utils/modelgenerator/internal/CaptureModelsSpecific.qll +++ b/csharp/ql/src/utils/modelgenerator/internal/CaptureModelsSpecific.qll @@ -8,7 +8,7 @@ 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 private import semmle.code.csharp.frameworks.system.linq.Expressions -import semmle.code.csharp.dataflow.ExternalFlow as ExternalFlow +import semmle.code.csharp.dataflow.internal.ExternalFlow as ExternalFlow import semmle.code.csharp.dataflow.internal.DataFlowImplCommon as DataFlowImplCommon import semmle.code.csharp.dataflow.internal.DataFlowPrivate as DataFlowPrivate 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 900f27f8f86..5aca9148ff1 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.ql +++ b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.ql @@ -3,7 +3,7 @@ */ import csharp -import semmle.code.csharp.dataflow.ExternalFlow +import semmle.code.csharp.dataflow.internal.ExternalFlow import Taint::PathGraph import ModelValidation 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 3cd09e342fa..b7fd04a4d7e 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/sinks.ql +++ b/csharp/ql/test/library-tests/dataflow/external-models/sinks.ql @@ -1,6 +1,6 @@ import csharp import DataFlow -import semmle.code.csharp.dataflow.ExternalFlow +import semmle.code.csharp.dataflow.internal.ExternalFlow import ModelValidation from DataFlow::Node node, string kind 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 5c0ab7306c7..f9c59d06b83 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/srcs.ql +++ b/csharp/ql/test/library-tests/dataflow/external-models/srcs.ql @@ -1,6 +1,6 @@ import csharp import DataFlow -import semmle.code.csharp.dataflow.ExternalFlow +import semmle.code.csharp.dataflow.internal.ExternalFlow import ModelValidation from DataFlow::Node node, string kind 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 f7635eae882..313f1dc9b7a 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/steps.ql +++ b/csharp/ql/test/library-tests/dataflow/external-models/steps.ql @@ -1,6 +1,6 @@ import csharp import DataFlow -import semmle.code.csharp.dataflow.ExternalFlow +import semmle.code.csharp.dataflow.internal.ExternalFlow import ModelValidation import semmle.code.csharp.dataflow.FlowSummary import semmle.code.csharp.dataflow.internal.DataFlowDispatch as DataFlowDispatch diff --git a/csharp/ql/test/library-tests/dataflow/external-models/validatemodels.ql b/csharp/ql/test/library-tests/dataflow/external-models/validatemodels.ql index d9e073ab78e..c538d5c29e1 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/validatemodels.ql +++ b/csharp/ql/test/library-tests/dataflow/external-models/validatemodels.ql @@ -1,5 +1,5 @@ import csharp -import semmle.code.csharp.dataflow.ExternalFlow +import semmle.code.csharp.dataflow.internal.ExternalFlow import semmle.code.csharp.dataflow.internal.AccessPathSyntax import ModelValidation diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql index c1e093a1f42..7bd6298b03e 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql @@ -1,6 +1,6 @@ import shared.FlowSummaries private import semmle.code.csharp.dataflow.internal.DataFlowPrivate::Csv -private import semmle.code.csharp.dataflow.ExternalFlow +private import semmle.code.csharp.dataflow.internal.ExternalFlow class IncludeFilteredSummarizedCallable extends IncludeSummarizedCallable instanceof SummarizedCallable { diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.ql b/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.ql index 75faad9d633..f2d0a1eadc5 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.ql +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.ql @@ -1,6 +1,6 @@ import semmle.code.csharp.frameworks.EntityFramework::EntityFramework import shared.FlowSummaries -import semmle.code.csharp.dataflow.ExternalFlow as ExternalFlow +import semmle.code.csharp.dataflow.internal.ExternalFlow as ExternalFlow private class IncludeEFSummarizedCallable extends IncludeSummarizedCallable instanceof EFSummarizedCallable { } diff --git a/csharp/ql/test/library-tests/frameworks/sql/Sql1.ql b/csharp/ql/test/library-tests/frameworks/sql/Sql1.ql index 944d4180992..659c37f769e 100644 --- a/csharp/ql/test/library-tests/frameworks/sql/Sql1.ql +++ b/csharp/ql/test/library-tests/frameworks/sql/Sql1.ql @@ -1,5 +1,5 @@ import semmle.code.csharp.frameworks.Sql -import semmle.code.csharp.dataflow.ExternalFlow +import semmle.code.csharp.dataflow.internal.ExternalFlow import semmle.code.csharp.dataflow.internal.DataFlowPublic query predicate sqlExpressions(SqlExpr se, Expr e) { se.getSql() = e } From 3e3ea51e698e62e45e790ebdcc2f2b21aaea8a2e Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 3 Nov 2023 15:05:33 +0100 Subject: [PATCH 049/122] C#: Correctly parse operator names in MaD --- .../csharp/dataflow/internal/ExternalFlow.qll | 13 +- .../dataflow/library/FlowSummaries.expected | 645 ++++++++++++++++++ .../library/FlowSummariesFiltered.expected | 16 + 3 files changed, 671 insertions(+), 3 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll index 995c598930d..cb1482e34e8 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll @@ -328,10 +328,17 @@ class UnboundCallable extends Callable { } } +private predicate hasName(Declaration d, string name) { + d.(Operator).getFunctionName() = name + or + not d instanceof Operator and + d.hasName(name) +} + pragma[nomagic] private predicate callableSpecInfo(Callable c, string namespace, string type, string name) { c.getDeclaringType().hasQualifiedName(namespace, type) and - c.getName() = name + hasName(c, name) } pragma[nomagic] @@ -344,7 +351,7 @@ private predicate subtypeSpecCandidate(string name, UnboundValueOrRefType t) { pragma[nomagic] private predicate callableInfo(Callable c, string name, UnboundValueOrRefType decl) { - name = c.getName() and + hasName(c, name) and decl = c.getDeclaringType() } @@ -405,7 +412,7 @@ private Element interpretElement0( subtypes = true and result.(UnboundCallable).overridesOrImplementsUnbound(m) ) and m.getDeclaringType() = t and - m.hasName(name) + hasName(m, name) | signature = "" or diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected index 9c113c1df49..45087504729 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected @@ -6051,6 +6051,8 @@ summary | System.Data.SqlTypes;SqlBinary;false;ToSqlGuid;();;Argument[this];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlBinary;false;WriteXml;(System.Xml.XmlWriter);;Argument[this];Argument[0];taint;df-generated | | System.Data.SqlTypes;SqlBinary;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.Data.SqlTypes;SqlBinary;false;op_Addition;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[0];ReturnValue;taint;df-generated | +| System.Data.SqlTypes;SqlBinary;false;op_Addition;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[1];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlBytes;false;Read;(System.Int64,System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[1].Element;taint;df-generated | | System.Data.SqlTypes;SqlBytes;false;ReadXml;(System.Xml.XmlReader);;Argument[0];Argument[this];taint;df-generated | | System.Data.SqlTypes;SqlBytes;false;SqlBytes;(System.Byte[]);;Argument[0].Element;Argument[this];taint;df-generated | @@ -6070,6 +6072,7 @@ summary | System.Data.SqlTypes;SqlDecimal;false;Floor;(System.Data.SqlTypes.SqlDecimal);;Argument[0];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlDecimal;false;Round;(System.Data.SqlTypes.SqlDecimal,System.Int32);;Argument[0];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlDecimal;false;Truncate;(System.Data.SqlTypes.SqlDecimal,System.Int32);;Argument[0];ReturnValue;taint;df-generated | +| System.Data.SqlTypes;SqlDecimal;false;op_UnaryNegation;(System.Data.SqlTypes.SqlDecimal);;Argument[0];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlFileStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | | System.Data.SqlTypes;SqlFileStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | System.Data.SqlTypes;SqlGuid;false;SqlGuid;(System.Byte[]);;Argument[0].Element;Argument[this];taint;df-generated | @@ -6089,6 +6092,8 @@ summary | System.Data.SqlTypes;SqlString;false;WriteXml;(System.Xml.XmlWriter);;Argument[this];Argument[0];taint;df-generated | | System.Data.SqlTypes;SqlString;false;get_CompareInfo;();;Argument[this];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlString;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.Data.SqlTypes;SqlString;false;op_Addition;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);;Argument[0];ReturnValue;taint;df-generated | +| System.Data.SqlTypes;SqlString;false;op_Addition;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);;Argument[1];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlXml;false;SqlXml;(System.IO.Stream);;Argument[0];Argument[this];taint;df-generated | | System.Data;Constraint;false;SetDataSet;(System.Data.DataSet);;Argument[0];Argument[this];taint;df-generated | | System.Data;Constraint;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | @@ -10856,6 +10861,11 @@ summary | System.Numerics;Matrix4x4;false;Negate;(System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;df-generated | | System.Numerics;Matrix4x4;false;Subtract;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;df-generated | | System.Numerics;Matrix4x4;false;Transpose;(System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;df-generated | +| System.Numerics;Matrix4x4;false;op_Addition;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;df-generated | +| System.Numerics;Matrix4x4;false;op_Multiply;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;df-generated | +| System.Numerics;Matrix4x4;false;op_Multiply;(System.Numerics.Matrix4x4,System.Single);;Argument[0];ReturnValue;taint;df-generated | +| System.Numerics;Matrix4x4;false;op_Subtraction;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;df-generated | +| System.Numerics;Matrix4x4;false;op_UnaryNegation;(System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;df-generated | | System.Numerics;Plane;false;Normalize;(System.Numerics.Plane);;Argument[0];ReturnValue;taint;df-generated | | System.Numerics;Plane;false;Plane;(System.Numerics.Vector3,System.Single);;Argument[0];Argument[this];taint;df-generated | | System.Numerics;Plane;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | @@ -11859,14 +11869,17 @@ summary | System.Runtime.InteropServices;SequenceMarshal;false;TryGetReadOnlySequenceSegment<>;(System.Buffers.ReadOnlySequence,System.Buffers.ReadOnlySequenceSegment,System.Int32,System.Buffers.ReadOnlySequenceSegment,System.Int32);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector64;false;Abs<>;(System.Runtime.Intrinsics.Vector64);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector64;false;WithElement<>;(System.Runtime.Intrinsics.Vector64,System.Int32,T);;Argument[0];ReturnValue;taint;df-generated | +| System.Runtime.Intrinsics;Vector64<>;false;op_UnaryPlus;(System.Runtime.Intrinsics.Vector64<>);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector128;false;Abs<>;(System.Runtime.Intrinsics.Vector128);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector128;false;WithElement<>;(System.Runtime.Intrinsics.Vector128,System.Int32,T);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector128;false;WithLower<>;(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector64);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector128;false;WithUpper<>;(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector64);;Argument[0];ReturnValue;taint;df-generated | +| System.Runtime.Intrinsics;Vector128<>;false;op_UnaryPlus;(System.Runtime.Intrinsics.Vector128<>);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector256;false;Abs<>;(System.Runtime.Intrinsics.Vector256);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector256;false;WithElement<>;(System.Runtime.Intrinsics.Vector256,System.Int32,T);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector256;false;WithLower<>;(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector128);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector256;false;WithUpper<>;(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector128);;Argument[0];ReturnValue;taint;df-generated | +| System.Runtime.Intrinsics;Vector256<>;false;op_UnaryPlus;(System.Runtime.Intrinsics.Vector256<>);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Loader;AssemblyDependencyResolver;false;ResolveAssemblyToPath;(System.Reflection.AssemblyName);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Loader;AssemblyDependencyResolver;false;ResolveAssemblyToPath;(System.Reflection.AssemblyName);;Argument[this];ReturnValue;taint;df-generated | | System.Runtime.Loader;AssemblyDependencyResolver;false;ResolveUnmanagedDllToPath;(System.String);;Argument[0];ReturnValue;taint;df-generated | @@ -14059,6 +14072,8 @@ summary | System.Xml.Linq;XNamespace;false;GetName;(System.String);;Argument[this];ReturnValue;taint;df-generated | | System.Xml.Linq;XNamespace;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | | System.Xml.Linq;XNamespace;false;get_NamespaceName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Xml.Linq;XNamespace;false;op_Addition;(System.Xml.Linq.XNamespace,System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.Xml.Linq;XNamespace;false;op_Addition;(System.Xml.Linq.XNamespace,System.String);;Argument[1];ReturnValue;taint;df-generated | | System.Xml.Linq;XNode;false;AddAfterSelf;(System.Object);;Argument[this];Argument[0];taint;df-generated | | System.Xml.Linq;XNode;false;AddBeforeSelf;(System.Object);;Argument[this];Argument[0];taint;df-generated | | System.Xml.Linq;XNode;false;Ancestors;();;Argument[this];ReturnValue;taint;df-generated | @@ -16494,6 +16509,7 @@ summary | System;StringNormalizationExtensions;false;Normalize;(System.String,System.Text.NormalizationForm);;Argument[0];ReturnValue;taint;df-generated | | System;TimeOnly;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;df-generated | | System;TimeOnly;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;df-generated | +| System;TimeSpan;false;op_UnaryPlus;(System.TimeSpan);;Argument[0];ReturnValue;taint;df-generated | | System;TimeZone;true;ToLocalTime;(System.DateTime);;Argument[0];ReturnValue;taint;df-generated | | System;TimeZone;true;ToUniversalTime;(System.DateTime);;Argument[0];ReturnValue;taint;df-generated | | System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime);;Argument[0];ReturnValue;taint;df-generated | @@ -17775,6 +17791,8 @@ neutral | Microsoft.Extensions.Logging;EventId;ToString;();summary;df-generated | | Microsoft.Extensions.Logging;EventId;get_Id;();summary;df-generated | | Microsoft.Extensions.Logging;EventId;get_Name;();summary;df-generated | +| Microsoft.Extensions.Logging;EventId;op_Equality;(Microsoft.Extensions.Logging.EventId,Microsoft.Extensions.Logging.EventId);summary;df-generated | +| Microsoft.Extensions.Logging;EventId;op_Inequality;(Microsoft.Extensions.Logging.EventId,Microsoft.Extensions.Logging.EventId);summary;df-generated | | Microsoft.Extensions.Logging;IExternalScopeProvider;Push;(System.Object);summary;df-generated | | Microsoft.Extensions.Logging;ILogger;BeginScope<>;(TState);summary;df-generated | | Microsoft.Extensions.Logging;ILogger;IsEnabled;(Microsoft.Extensions.Logging.LogLevel);summary;df-generated | @@ -18096,6 +18114,8 @@ neutral | Microsoft.Extensions.Primitives;StringSegment;get_Length;();summary;df-generated | | Microsoft.Extensions.Primitives;StringSegment;get_Offset;();summary;df-generated | | Microsoft.Extensions.Primitives;StringSegment;get_Value;();summary;df-generated | +| Microsoft.Extensions.Primitives;StringSegment;op_Equality;(Microsoft.Extensions.Primitives.StringSegment,Microsoft.Extensions.Primitives.StringSegment);summary;df-generated | +| Microsoft.Extensions.Primitives;StringSegment;op_Inequality;(Microsoft.Extensions.Primitives.StringSegment,Microsoft.Extensions.Primitives.StringSegment);summary;df-generated | | Microsoft.Extensions.Primitives;StringSegmentComparer;Compare;(Microsoft.Extensions.Primitives.StringSegment,Microsoft.Extensions.Primitives.StringSegment);summary;df-generated | | Microsoft.Extensions.Primitives;StringSegmentComparer;Equals;(Microsoft.Extensions.Primitives.StringSegment,Microsoft.Extensions.Primitives.StringSegment);summary;df-generated | | Microsoft.Extensions.Primitives;StringSegmentComparer;GetHashCode;(Microsoft.Extensions.Primitives.StringSegment);summary;df-generated | @@ -18109,6 +18129,20 @@ neutral | Microsoft.Extensions.Primitives;StringValues+Enumerator;Enumerator;(Microsoft.Extensions.Primitives.StringValues);summary;df-generated | | Microsoft.Extensions.Primitives;StringValues+Enumerator;MoveNext;();summary;df-generated | | Microsoft.Extensions.Primitives;StringValues+Enumerator;Reset;();summary;df-generated | +| Microsoft.Extensions.Primitives;StringValues;op_Equality;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);summary;df-generated | +| Microsoft.Extensions.Primitives;StringValues;op_Equality;(Microsoft.Extensions.Primitives.StringValues,System.Object);summary;df-generated | +| Microsoft.Extensions.Primitives;StringValues;op_Equality;(Microsoft.Extensions.Primitives.StringValues,System.String);summary;df-generated | +| Microsoft.Extensions.Primitives;StringValues;op_Equality;(Microsoft.Extensions.Primitives.StringValues,System.String[]);summary;df-generated | +| Microsoft.Extensions.Primitives;StringValues;op_Equality;(System.Object,Microsoft.Extensions.Primitives.StringValues);summary;df-generated | +| Microsoft.Extensions.Primitives;StringValues;op_Equality;(System.String,Microsoft.Extensions.Primitives.StringValues);summary;df-generated | +| Microsoft.Extensions.Primitives;StringValues;op_Equality;(System.String[],Microsoft.Extensions.Primitives.StringValues);summary;df-generated | +| Microsoft.Extensions.Primitives;StringValues;op_Inequality;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);summary;df-generated | +| Microsoft.Extensions.Primitives;StringValues;op_Inequality;(Microsoft.Extensions.Primitives.StringValues,System.Object);summary;df-generated | +| Microsoft.Extensions.Primitives;StringValues;op_Inequality;(Microsoft.Extensions.Primitives.StringValues,System.String);summary;df-generated | +| Microsoft.Extensions.Primitives;StringValues;op_Inequality;(Microsoft.Extensions.Primitives.StringValues,System.String[]);summary;df-generated | +| Microsoft.Extensions.Primitives;StringValues;op_Inequality;(System.Object,Microsoft.Extensions.Primitives.StringValues);summary;df-generated | +| Microsoft.Extensions.Primitives;StringValues;op_Inequality;(System.String,Microsoft.Extensions.Primitives.StringValues);summary;df-generated | +| Microsoft.Extensions.Primitives;StringValues;op_Inequality;(System.String[],Microsoft.Extensions.Primitives.StringValues);summary;df-generated | | Microsoft.VisualBasic.CompilerServices;BooleanType;FromObject;(System.Object);summary;df-generated | | Microsoft.VisualBasic.CompilerServices;BooleanType;FromString;(System.String);summary;df-generated | | Microsoft.VisualBasic.CompilerServices;ByteType;FromObject;(System.Object);summary;df-generated | @@ -19041,6 +19075,8 @@ neutral | System.Buffers;StandardFormat;get_IsDefault;();summary;df-generated | | System.Buffers;StandardFormat;get_Precision;();summary;df-generated | | System.Buffers;StandardFormat;get_Symbol;();summary;df-generated | +| System.Buffers;StandardFormat;op_Equality;(System.Buffers.StandardFormat,System.Buffers.StandardFormat);summary;df-generated | +| System.Buffers;StandardFormat;op_Inequality;(System.Buffers.StandardFormat,System.Buffers.StandardFormat);summary;df-generated | | System.CodeDom.Compiler;IndentedTextWriter;Close;();summary;df-generated | | System.CodeDom.Compiler;IndentedTextWriter;DisposeAsync;();summary;df-generated | | System.CodeDom.Compiler;IndentedTextWriter;Flush;();summary;df-generated | @@ -19598,6 +19634,10 @@ neutral | System.Collections.Immutable;ImmutableArray<>;get_IsSynchronized;();summary;df-generated | | System.Collections.Immutable;ImmutableArray<>;get_Length;();summary;df-generated | | System.Collections.Immutable;ImmutableArray<>;get_SyncRoot;();summary;df-generated | +| System.Collections.Immutable;ImmutableArray<>;op_Equality;(System.Collections.Immutable.ImmutableArray<>,System.Collections.Immutable.ImmutableArray<>);summary;df-generated | +| System.Collections.Immutable;ImmutableArray<>;op_Equality;(System.Nullable>,System.Nullable>);summary;df-generated | +| System.Collections.Immutable;ImmutableArray<>;op_Inequality;(System.Collections.Immutable.ImmutableArray<>,System.Collections.Immutable.ImmutableArray<>);summary;df-generated | +| System.Collections.Immutable;ImmutableArray<>;op_Inequality;(System.Nullable>,System.Nullable>);summary;df-generated | | System.Collections.Immutable;ImmutableDictionary;Contains<,>;(System.Collections.Immutable.IImmutableDictionary,TKey,TValue);summary;df-generated | | System.Collections.Immutable;ImmutableDictionary;Create<,>;();summary;df-generated | | System.Collections.Immutable;ImmutableDictionary;CreateBuilder<,>;();summary;df-generated | @@ -19909,6 +19949,8 @@ neutral | System.Collections.Specialized;BitVector32+Section;ToString;(System.Collections.Specialized.BitVector32+Section);summary;df-generated | | System.Collections.Specialized;BitVector32+Section;get_Mask;();summary;df-generated | | System.Collections.Specialized;BitVector32+Section;get_Offset;();summary;df-generated | +| System.Collections.Specialized;BitVector32+Section;op_Equality;(System.Collections.Specialized.BitVector32+Section,System.Collections.Specialized.BitVector32+Section);summary;df-generated | +| System.Collections.Specialized;BitVector32+Section;op_Inequality;(System.Collections.Specialized.BitVector32+Section,System.Collections.Specialized.BitVector32+Section);summary;df-generated | | System.Collections.Specialized;BitVector32;BitVector32;(System.Collections.Specialized.BitVector32);summary;df-generated | | System.Collections.Specialized;BitVector32;BitVector32;(System.Int32);summary;df-generated | | System.Collections.Specialized;BitVector32;CreateMask;();summary;df-generated | @@ -20427,6 +20469,8 @@ neutral | System.ComponentModel.Design.Serialization;MemberRelationship;get_IsEmpty;();summary;df-generated | | System.ComponentModel.Design.Serialization;MemberRelationship;get_Member;();summary;df-generated | | System.ComponentModel.Design.Serialization;MemberRelationship;get_Owner;();summary;df-generated | +| System.ComponentModel.Design.Serialization;MemberRelationship;op_Equality;(System.ComponentModel.Design.Serialization.MemberRelationship,System.ComponentModel.Design.Serialization.MemberRelationship);summary;df-generated | +| System.ComponentModel.Design.Serialization;MemberRelationship;op_Inequality;(System.ComponentModel.Design.Serialization.MemberRelationship,System.ComponentModel.Design.Serialization.MemberRelationship);summary;df-generated | | System.ComponentModel.Design.Serialization;MemberRelationshipService;GetRelationship;(System.ComponentModel.Design.Serialization.MemberRelationship);summary;df-generated | | System.ComponentModel.Design.Serialization;MemberRelationshipService;SetRelationship;(System.ComponentModel.Design.Serialization.MemberRelationship,System.ComponentModel.Design.Serialization.MemberRelationship);summary;df-generated | | System.ComponentModel.Design.Serialization;MemberRelationshipService;SupportsRelationship;(System.ComponentModel.Design.Serialization.MemberRelationship,System.ComponentModel.Design.Serialization.MemberRelationship);summary;df-generated | @@ -22084,6 +22128,12 @@ neutral | System.Data.SqlTypes;SqlBinary;get_IsNull;();summary;df-generated | | System.Data.SqlTypes;SqlBinary;get_Item;(System.Int32);summary;df-generated | | System.Data.SqlTypes;SqlBinary;get_Length;();summary;df-generated | +| System.Data.SqlTypes;SqlBinary;op_Equality;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);summary;df-generated | +| System.Data.SqlTypes;SqlBinary;op_GreaterThan;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);summary;df-generated | +| System.Data.SqlTypes;SqlBinary;op_GreaterThanOrEqual;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);summary;df-generated | +| System.Data.SqlTypes;SqlBinary;op_Inequality;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);summary;df-generated | +| System.Data.SqlTypes;SqlBinary;op_LessThan;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);summary;df-generated | +| System.Data.SqlTypes;SqlBinary;op_LessThanOrEqual;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);summary;df-generated | | System.Data.SqlTypes;SqlBoolean;And;(System.Data.SqlTypes.SqlBoolean,System.Data.SqlTypes.SqlBoolean);summary;df-generated | | System.Data.SqlTypes;SqlBoolean;CompareTo;(System.Data.SqlTypes.SqlBoolean);summary;df-generated | | System.Data.SqlTypes;SqlBoolean;CompareTo;(System.Object);summary;df-generated | @@ -22120,6 +22170,19 @@ neutral | System.Data.SqlTypes;SqlBoolean;get_IsNull;();summary;df-generated | | System.Data.SqlTypes;SqlBoolean;get_IsTrue;();summary;df-generated | | System.Data.SqlTypes;SqlBoolean;get_Value;();summary;df-generated | +| System.Data.SqlTypes;SqlBoolean;op_BitwiseAnd;(System.Data.SqlTypes.SqlBoolean,System.Data.SqlTypes.SqlBoolean);summary;df-generated | +| System.Data.SqlTypes;SqlBoolean;op_BitwiseOr;(System.Data.SqlTypes.SqlBoolean,System.Data.SqlTypes.SqlBoolean);summary;df-generated | +| System.Data.SqlTypes;SqlBoolean;op_Equality;(System.Data.SqlTypes.SqlBoolean,System.Data.SqlTypes.SqlBoolean);summary;df-generated | +| System.Data.SqlTypes;SqlBoolean;op_ExclusiveOr;(System.Data.SqlTypes.SqlBoolean,System.Data.SqlTypes.SqlBoolean);summary;df-generated | +| System.Data.SqlTypes;SqlBoolean;op_False;(System.Data.SqlTypes.SqlBoolean);summary;df-generated | +| System.Data.SqlTypes;SqlBoolean;op_GreaterThan;(System.Data.SqlTypes.SqlBoolean,System.Data.SqlTypes.SqlBoolean);summary;df-generated | +| System.Data.SqlTypes;SqlBoolean;op_GreaterThanOrEqual;(System.Data.SqlTypes.SqlBoolean,System.Data.SqlTypes.SqlBoolean);summary;df-generated | +| System.Data.SqlTypes;SqlBoolean;op_Inequality;(System.Data.SqlTypes.SqlBoolean,System.Data.SqlTypes.SqlBoolean);summary;df-generated | +| System.Data.SqlTypes;SqlBoolean;op_LessThan;(System.Data.SqlTypes.SqlBoolean,System.Data.SqlTypes.SqlBoolean);summary;df-generated | +| System.Data.SqlTypes;SqlBoolean;op_LessThanOrEqual;(System.Data.SqlTypes.SqlBoolean,System.Data.SqlTypes.SqlBoolean);summary;df-generated | +| System.Data.SqlTypes;SqlBoolean;op_LogicalNot;(System.Data.SqlTypes.SqlBoolean);summary;df-generated | +| System.Data.SqlTypes;SqlBoolean;op_OnesComplement;(System.Data.SqlTypes.SqlBoolean);summary;df-generated | +| System.Data.SqlTypes;SqlBoolean;op_True;(System.Data.SqlTypes.SqlBoolean);summary;df-generated | | System.Data.SqlTypes;SqlByte;Add;(System.Data.SqlTypes.SqlByte,System.Data.SqlTypes.SqlByte);summary;df-generated | | System.Data.SqlTypes;SqlByte;BitwiseAnd;(System.Data.SqlTypes.SqlByte,System.Data.SqlTypes.SqlByte);summary;df-generated | | System.Data.SqlTypes;SqlByte;BitwiseOr;(System.Data.SqlTypes.SqlByte,System.Data.SqlTypes.SqlByte);summary;df-generated | @@ -22158,6 +22221,21 @@ neutral | System.Data.SqlTypes;SqlByte;Xor;(System.Data.SqlTypes.SqlByte,System.Data.SqlTypes.SqlByte);summary;df-generated | | System.Data.SqlTypes;SqlByte;get_IsNull;();summary;df-generated | | System.Data.SqlTypes;SqlByte;get_Value;();summary;df-generated | +| System.Data.SqlTypes;SqlByte;op_Addition;(System.Data.SqlTypes.SqlByte,System.Data.SqlTypes.SqlByte);summary;df-generated | +| System.Data.SqlTypes;SqlByte;op_BitwiseAnd;(System.Data.SqlTypes.SqlByte,System.Data.SqlTypes.SqlByte);summary;df-generated | +| System.Data.SqlTypes;SqlByte;op_BitwiseOr;(System.Data.SqlTypes.SqlByte,System.Data.SqlTypes.SqlByte);summary;df-generated | +| System.Data.SqlTypes;SqlByte;op_Division;(System.Data.SqlTypes.SqlByte,System.Data.SqlTypes.SqlByte);summary;df-generated | +| System.Data.SqlTypes;SqlByte;op_Equality;(System.Data.SqlTypes.SqlByte,System.Data.SqlTypes.SqlByte);summary;df-generated | +| System.Data.SqlTypes;SqlByte;op_ExclusiveOr;(System.Data.SqlTypes.SqlByte,System.Data.SqlTypes.SqlByte);summary;df-generated | +| System.Data.SqlTypes;SqlByte;op_GreaterThan;(System.Data.SqlTypes.SqlByte,System.Data.SqlTypes.SqlByte);summary;df-generated | +| System.Data.SqlTypes;SqlByte;op_GreaterThanOrEqual;(System.Data.SqlTypes.SqlByte,System.Data.SqlTypes.SqlByte);summary;df-generated | +| System.Data.SqlTypes;SqlByte;op_Inequality;(System.Data.SqlTypes.SqlByte,System.Data.SqlTypes.SqlByte);summary;df-generated | +| System.Data.SqlTypes;SqlByte;op_LessThan;(System.Data.SqlTypes.SqlByte,System.Data.SqlTypes.SqlByte);summary;df-generated | +| System.Data.SqlTypes;SqlByte;op_LessThanOrEqual;(System.Data.SqlTypes.SqlByte,System.Data.SqlTypes.SqlByte);summary;df-generated | +| System.Data.SqlTypes;SqlByte;op_Modulus;(System.Data.SqlTypes.SqlByte,System.Data.SqlTypes.SqlByte);summary;df-generated | +| System.Data.SqlTypes;SqlByte;op_Multiply;(System.Data.SqlTypes.SqlByte,System.Data.SqlTypes.SqlByte);summary;df-generated | +| System.Data.SqlTypes;SqlByte;op_OnesComplement;(System.Data.SqlTypes.SqlByte);summary;df-generated | +| System.Data.SqlTypes;SqlByte;op_Subtraction;(System.Data.SqlTypes.SqlByte,System.Data.SqlTypes.SqlByte);summary;df-generated | | System.Data.SqlTypes;SqlBytes;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | | System.Data.SqlTypes;SqlBytes;GetSchema;();summary;df-generated | | System.Data.SqlTypes;SqlBytes;GetXsdType;(System.Xml.Schema.XmlSchemaSet);summary;df-generated | @@ -22222,6 +22300,14 @@ neutral | System.Data.SqlTypes;SqlDateTime;get_IsNull;();summary;df-generated | | System.Data.SqlTypes;SqlDateTime;get_TimeTicks;();summary;df-generated | | System.Data.SqlTypes;SqlDateTime;get_Value;();summary;df-generated | +| System.Data.SqlTypes;SqlDateTime;op_Addition;(System.Data.SqlTypes.SqlDateTime,System.TimeSpan);summary;df-generated | +| System.Data.SqlTypes;SqlDateTime;op_Equality;(System.Data.SqlTypes.SqlDateTime,System.Data.SqlTypes.SqlDateTime);summary;df-generated | +| System.Data.SqlTypes;SqlDateTime;op_GreaterThan;(System.Data.SqlTypes.SqlDateTime,System.Data.SqlTypes.SqlDateTime);summary;df-generated | +| System.Data.SqlTypes;SqlDateTime;op_GreaterThanOrEqual;(System.Data.SqlTypes.SqlDateTime,System.Data.SqlTypes.SqlDateTime);summary;df-generated | +| System.Data.SqlTypes;SqlDateTime;op_Inequality;(System.Data.SqlTypes.SqlDateTime,System.Data.SqlTypes.SqlDateTime);summary;df-generated | +| System.Data.SqlTypes;SqlDateTime;op_LessThan;(System.Data.SqlTypes.SqlDateTime,System.Data.SqlTypes.SqlDateTime);summary;df-generated | +| System.Data.SqlTypes;SqlDateTime;op_LessThanOrEqual;(System.Data.SqlTypes.SqlDateTime,System.Data.SqlTypes.SqlDateTime);summary;df-generated | +| System.Data.SqlTypes;SqlDateTime;op_Subtraction;(System.Data.SqlTypes.SqlDateTime,System.TimeSpan);summary;df-generated | | System.Data.SqlTypes;SqlDecimal;Add;(System.Data.SqlTypes.SqlDecimal,System.Data.SqlTypes.SqlDecimal);summary;df-generated | | System.Data.SqlTypes;SqlDecimal;CompareTo;(System.Data.SqlTypes.SqlDecimal);summary;df-generated | | System.Data.SqlTypes;SqlDecimal;CompareTo;(System.Object);summary;df-generated | @@ -22267,6 +22353,16 @@ neutral | System.Data.SqlTypes;SqlDecimal;get_Precision;();summary;df-generated | | System.Data.SqlTypes;SqlDecimal;get_Scale;();summary;df-generated | | System.Data.SqlTypes;SqlDecimal;get_Value;();summary;df-generated | +| System.Data.SqlTypes;SqlDecimal;op_Addition;(System.Data.SqlTypes.SqlDecimal,System.Data.SqlTypes.SqlDecimal);summary;df-generated | +| System.Data.SqlTypes;SqlDecimal;op_Division;(System.Data.SqlTypes.SqlDecimal,System.Data.SqlTypes.SqlDecimal);summary;df-generated | +| System.Data.SqlTypes;SqlDecimal;op_Equality;(System.Data.SqlTypes.SqlDecimal,System.Data.SqlTypes.SqlDecimal);summary;df-generated | +| System.Data.SqlTypes;SqlDecimal;op_GreaterThan;(System.Data.SqlTypes.SqlDecimal,System.Data.SqlTypes.SqlDecimal);summary;df-generated | +| System.Data.SqlTypes;SqlDecimal;op_GreaterThanOrEqual;(System.Data.SqlTypes.SqlDecimal,System.Data.SqlTypes.SqlDecimal);summary;df-generated | +| System.Data.SqlTypes;SqlDecimal;op_Inequality;(System.Data.SqlTypes.SqlDecimal,System.Data.SqlTypes.SqlDecimal);summary;df-generated | +| System.Data.SqlTypes;SqlDecimal;op_LessThan;(System.Data.SqlTypes.SqlDecimal,System.Data.SqlTypes.SqlDecimal);summary;df-generated | +| System.Data.SqlTypes;SqlDecimal;op_LessThanOrEqual;(System.Data.SqlTypes.SqlDecimal,System.Data.SqlTypes.SqlDecimal);summary;df-generated | +| System.Data.SqlTypes;SqlDecimal;op_Multiply;(System.Data.SqlTypes.SqlDecimal,System.Data.SqlTypes.SqlDecimal);summary;df-generated | +| System.Data.SqlTypes;SqlDecimal;op_Subtraction;(System.Data.SqlTypes.SqlDecimal,System.Data.SqlTypes.SqlDecimal);summary;df-generated | | System.Data.SqlTypes;SqlDouble;Add;(System.Data.SqlTypes.SqlDouble,System.Data.SqlTypes.SqlDouble);summary;df-generated | | System.Data.SqlTypes;SqlDouble;CompareTo;(System.Data.SqlTypes.SqlDouble);summary;df-generated | | System.Data.SqlTypes;SqlDouble;CompareTo;(System.Object);summary;df-generated | @@ -22299,6 +22395,17 @@ neutral | System.Data.SqlTypes;SqlDouble;WriteXml;(System.Xml.XmlWriter);summary;df-generated | | System.Data.SqlTypes;SqlDouble;get_IsNull;();summary;df-generated | | System.Data.SqlTypes;SqlDouble;get_Value;();summary;df-generated | +| System.Data.SqlTypes;SqlDouble;op_Addition;(System.Data.SqlTypes.SqlDouble,System.Data.SqlTypes.SqlDouble);summary;df-generated | +| System.Data.SqlTypes;SqlDouble;op_Division;(System.Data.SqlTypes.SqlDouble,System.Data.SqlTypes.SqlDouble);summary;df-generated | +| System.Data.SqlTypes;SqlDouble;op_Equality;(System.Data.SqlTypes.SqlDouble,System.Data.SqlTypes.SqlDouble);summary;df-generated | +| System.Data.SqlTypes;SqlDouble;op_GreaterThan;(System.Data.SqlTypes.SqlDouble,System.Data.SqlTypes.SqlDouble);summary;df-generated | +| System.Data.SqlTypes;SqlDouble;op_GreaterThanOrEqual;(System.Data.SqlTypes.SqlDouble,System.Data.SqlTypes.SqlDouble);summary;df-generated | +| System.Data.SqlTypes;SqlDouble;op_Inequality;(System.Data.SqlTypes.SqlDouble,System.Data.SqlTypes.SqlDouble);summary;df-generated | +| System.Data.SqlTypes;SqlDouble;op_LessThan;(System.Data.SqlTypes.SqlDouble,System.Data.SqlTypes.SqlDouble);summary;df-generated | +| System.Data.SqlTypes;SqlDouble;op_LessThanOrEqual;(System.Data.SqlTypes.SqlDouble,System.Data.SqlTypes.SqlDouble);summary;df-generated | +| System.Data.SqlTypes;SqlDouble;op_Multiply;(System.Data.SqlTypes.SqlDouble,System.Data.SqlTypes.SqlDouble);summary;df-generated | +| System.Data.SqlTypes;SqlDouble;op_Subtraction;(System.Data.SqlTypes.SqlDouble,System.Data.SqlTypes.SqlDouble);summary;df-generated | +| System.Data.SqlTypes;SqlDouble;op_UnaryNegation;(System.Data.SqlTypes.SqlDouble);summary;df-generated | | System.Data.SqlTypes;SqlGuid;CompareTo;(System.Data.SqlTypes.SqlGuid);summary;df-generated | | System.Data.SqlTypes;SqlGuid;CompareTo;(System.Object);summary;df-generated | | System.Data.SqlTypes;SqlGuid;Equals;(System.Data.SqlTypes.SqlGuid,System.Data.SqlTypes.SqlGuid);summary;df-generated | @@ -22321,6 +22428,12 @@ neutral | System.Data.SqlTypes;SqlGuid;WriteXml;(System.Xml.XmlWriter);summary;df-generated | | System.Data.SqlTypes;SqlGuid;get_IsNull;();summary;df-generated | | System.Data.SqlTypes;SqlGuid;get_Value;();summary;df-generated | +| System.Data.SqlTypes;SqlGuid;op_Equality;(System.Data.SqlTypes.SqlGuid,System.Data.SqlTypes.SqlGuid);summary;df-generated | +| System.Data.SqlTypes;SqlGuid;op_GreaterThan;(System.Data.SqlTypes.SqlGuid,System.Data.SqlTypes.SqlGuid);summary;df-generated | +| System.Data.SqlTypes;SqlGuid;op_GreaterThanOrEqual;(System.Data.SqlTypes.SqlGuid,System.Data.SqlTypes.SqlGuid);summary;df-generated | +| System.Data.SqlTypes;SqlGuid;op_Inequality;(System.Data.SqlTypes.SqlGuid,System.Data.SqlTypes.SqlGuid);summary;df-generated | +| System.Data.SqlTypes;SqlGuid;op_LessThan;(System.Data.SqlTypes.SqlGuid,System.Data.SqlTypes.SqlGuid);summary;df-generated | +| System.Data.SqlTypes;SqlGuid;op_LessThanOrEqual;(System.Data.SqlTypes.SqlGuid,System.Data.SqlTypes.SqlGuid);summary;df-generated | | System.Data.SqlTypes;SqlInt16;Add;(System.Data.SqlTypes.SqlInt16,System.Data.SqlTypes.SqlInt16);summary;df-generated | | System.Data.SqlTypes;SqlInt16;BitwiseAnd;(System.Data.SqlTypes.SqlInt16,System.Data.SqlTypes.SqlInt16);summary;df-generated | | System.Data.SqlTypes;SqlInt16;BitwiseOr;(System.Data.SqlTypes.SqlInt16,System.Data.SqlTypes.SqlInt16);summary;df-generated | @@ -22359,6 +22472,22 @@ neutral | System.Data.SqlTypes;SqlInt16;Xor;(System.Data.SqlTypes.SqlInt16,System.Data.SqlTypes.SqlInt16);summary;df-generated | | System.Data.SqlTypes;SqlInt16;get_IsNull;();summary;df-generated | | System.Data.SqlTypes;SqlInt16;get_Value;();summary;df-generated | +| System.Data.SqlTypes;SqlInt16;op_Addition;(System.Data.SqlTypes.SqlInt16,System.Data.SqlTypes.SqlInt16);summary;df-generated | +| System.Data.SqlTypes;SqlInt16;op_BitwiseAnd;(System.Data.SqlTypes.SqlInt16,System.Data.SqlTypes.SqlInt16);summary;df-generated | +| System.Data.SqlTypes;SqlInt16;op_BitwiseOr;(System.Data.SqlTypes.SqlInt16,System.Data.SqlTypes.SqlInt16);summary;df-generated | +| System.Data.SqlTypes;SqlInt16;op_Division;(System.Data.SqlTypes.SqlInt16,System.Data.SqlTypes.SqlInt16);summary;df-generated | +| System.Data.SqlTypes;SqlInt16;op_Equality;(System.Data.SqlTypes.SqlInt16,System.Data.SqlTypes.SqlInt16);summary;df-generated | +| System.Data.SqlTypes;SqlInt16;op_ExclusiveOr;(System.Data.SqlTypes.SqlInt16,System.Data.SqlTypes.SqlInt16);summary;df-generated | +| System.Data.SqlTypes;SqlInt16;op_GreaterThan;(System.Data.SqlTypes.SqlInt16,System.Data.SqlTypes.SqlInt16);summary;df-generated | +| System.Data.SqlTypes;SqlInt16;op_GreaterThanOrEqual;(System.Data.SqlTypes.SqlInt16,System.Data.SqlTypes.SqlInt16);summary;df-generated | +| System.Data.SqlTypes;SqlInt16;op_Inequality;(System.Data.SqlTypes.SqlInt16,System.Data.SqlTypes.SqlInt16);summary;df-generated | +| System.Data.SqlTypes;SqlInt16;op_LessThan;(System.Data.SqlTypes.SqlInt16,System.Data.SqlTypes.SqlInt16);summary;df-generated | +| System.Data.SqlTypes;SqlInt16;op_LessThanOrEqual;(System.Data.SqlTypes.SqlInt16,System.Data.SqlTypes.SqlInt16);summary;df-generated | +| System.Data.SqlTypes;SqlInt16;op_Modulus;(System.Data.SqlTypes.SqlInt16,System.Data.SqlTypes.SqlInt16);summary;df-generated | +| System.Data.SqlTypes;SqlInt16;op_Multiply;(System.Data.SqlTypes.SqlInt16,System.Data.SqlTypes.SqlInt16);summary;df-generated | +| System.Data.SqlTypes;SqlInt16;op_OnesComplement;(System.Data.SqlTypes.SqlInt16);summary;df-generated | +| System.Data.SqlTypes;SqlInt16;op_Subtraction;(System.Data.SqlTypes.SqlInt16,System.Data.SqlTypes.SqlInt16);summary;df-generated | +| System.Data.SqlTypes;SqlInt16;op_UnaryNegation;(System.Data.SqlTypes.SqlInt16);summary;df-generated | | System.Data.SqlTypes;SqlInt32;Add;(System.Data.SqlTypes.SqlInt32,System.Data.SqlTypes.SqlInt32);summary;df-generated | | System.Data.SqlTypes;SqlInt32;BitwiseAnd;(System.Data.SqlTypes.SqlInt32,System.Data.SqlTypes.SqlInt32);summary;df-generated | | System.Data.SqlTypes;SqlInt32;BitwiseOr;(System.Data.SqlTypes.SqlInt32,System.Data.SqlTypes.SqlInt32);summary;df-generated | @@ -22397,6 +22526,22 @@ neutral | System.Data.SqlTypes;SqlInt32;Xor;(System.Data.SqlTypes.SqlInt32,System.Data.SqlTypes.SqlInt32);summary;df-generated | | System.Data.SqlTypes;SqlInt32;get_IsNull;();summary;df-generated | | System.Data.SqlTypes;SqlInt32;get_Value;();summary;df-generated | +| System.Data.SqlTypes;SqlInt32;op_Addition;(System.Data.SqlTypes.SqlInt32,System.Data.SqlTypes.SqlInt32);summary;df-generated | +| System.Data.SqlTypes;SqlInt32;op_BitwiseAnd;(System.Data.SqlTypes.SqlInt32,System.Data.SqlTypes.SqlInt32);summary;df-generated | +| System.Data.SqlTypes;SqlInt32;op_BitwiseOr;(System.Data.SqlTypes.SqlInt32,System.Data.SqlTypes.SqlInt32);summary;df-generated | +| System.Data.SqlTypes;SqlInt32;op_Division;(System.Data.SqlTypes.SqlInt32,System.Data.SqlTypes.SqlInt32);summary;df-generated | +| System.Data.SqlTypes;SqlInt32;op_Equality;(System.Data.SqlTypes.SqlInt32,System.Data.SqlTypes.SqlInt32);summary;df-generated | +| System.Data.SqlTypes;SqlInt32;op_ExclusiveOr;(System.Data.SqlTypes.SqlInt32,System.Data.SqlTypes.SqlInt32);summary;df-generated | +| System.Data.SqlTypes;SqlInt32;op_GreaterThan;(System.Data.SqlTypes.SqlInt32,System.Data.SqlTypes.SqlInt32);summary;df-generated | +| System.Data.SqlTypes;SqlInt32;op_GreaterThanOrEqual;(System.Data.SqlTypes.SqlInt32,System.Data.SqlTypes.SqlInt32);summary;df-generated | +| System.Data.SqlTypes;SqlInt32;op_Inequality;(System.Data.SqlTypes.SqlInt32,System.Data.SqlTypes.SqlInt32);summary;df-generated | +| System.Data.SqlTypes;SqlInt32;op_LessThan;(System.Data.SqlTypes.SqlInt32,System.Data.SqlTypes.SqlInt32);summary;df-generated | +| System.Data.SqlTypes;SqlInt32;op_LessThanOrEqual;(System.Data.SqlTypes.SqlInt32,System.Data.SqlTypes.SqlInt32);summary;df-generated | +| System.Data.SqlTypes;SqlInt32;op_Modulus;(System.Data.SqlTypes.SqlInt32,System.Data.SqlTypes.SqlInt32);summary;df-generated | +| System.Data.SqlTypes;SqlInt32;op_Multiply;(System.Data.SqlTypes.SqlInt32,System.Data.SqlTypes.SqlInt32);summary;df-generated | +| System.Data.SqlTypes;SqlInt32;op_OnesComplement;(System.Data.SqlTypes.SqlInt32);summary;df-generated | +| System.Data.SqlTypes;SqlInt32;op_Subtraction;(System.Data.SqlTypes.SqlInt32,System.Data.SqlTypes.SqlInt32);summary;df-generated | +| System.Data.SqlTypes;SqlInt32;op_UnaryNegation;(System.Data.SqlTypes.SqlInt32);summary;df-generated | | System.Data.SqlTypes;SqlInt64;Add;(System.Data.SqlTypes.SqlInt64,System.Data.SqlTypes.SqlInt64);summary;df-generated | | System.Data.SqlTypes;SqlInt64;BitwiseAnd;(System.Data.SqlTypes.SqlInt64,System.Data.SqlTypes.SqlInt64);summary;df-generated | | System.Data.SqlTypes;SqlInt64;BitwiseOr;(System.Data.SqlTypes.SqlInt64,System.Data.SqlTypes.SqlInt64);summary;df-generated | @@ -22435,6 +22580,22 @@ neutral | System.Data.SqlTypes;SqlInt64;Xor;(System.Data.SqlTypes.SqlInt64,System.Data.SqlTypes.SqlInt64);summary;df-generated | | System.Data.SqlTypes;SqlInt64;get_IsNull;();summary;df-generated | | System.Data.SqlTypes;SqlInt64;get_Value;();summary;df-generated | +| System.Data.SqlTypes;SqlInt64;op_Addition;(System.Data.SqlTypes.SqlInt64,System.Data.SqlTypes.SqlInt64);summary;df-generated | +| System.Data.SqlTypes;SqlInt64;op_BitwiseAnd;(System.Data.SqlTypes.SqlInt64,System.Data.SqlTypes.SqlInt64);summary;df-generated | +| System.Data.SqlTypes;SqlInt64;op_BitwiseOr;(System.Data.SqlTypes.SqlInt64,System.Data.SqlTypes.SqlInt64);summary;df-generated | +| System.Data.SqlTypes;SqlInt64;op_Division;(System.Data.SqlTypes.SqlInt64,System.Data.SqlTypes.SqlInt64);summary;df-generated | +| System.Data.SqlTypes;SqlInt64;op_Equality;(System.Data.SqlTypes.SqlInt64,System.Data.SqlTypes.SqlInt64);summary;df-generated | +| System.Data.SqlTypes;SqlInt64;op_ExclusiveOr;(System.Data.SqlTypes.SqlInt64,System.Data.SqlTypes.SqlInt64);summary;df-generated | +| System.Data.SqlTypes;SqlInt64;op_GreaterThan;(System.Data.SqlTypes.SqlInt64,System.Data.SqlTypes.SqlInt64);summary;df-generated | +| System.Data.SqlTypes;SqlInt64;op_GreaterThanOrEqual;(System.Data.SqlTypes.SqlInt64,System.Data.SqlTypes.SqlInt64);summary;df-generated | +| System.Data.SqlTypes;SqlInt64;op_Inequality;(System.Data.SqlTypes.SqlInt64,System.Data.SqlTypes.SqlInt64);summary;df-generated | +| System.Data.SqlTypes;SqlInt64;op_LessThan;(System.Data.SqlTypes.SqlInt64,System.Data.SqlTypes.SqlInt64);summary;df-generated | +| System.Data.SqlTypes;SqlInt64;op_LessThanOrEqual;(System.Data.SqlTypes.SqlInt64,System.Data.SqlTypes.SqlInt64);summary;df-generated | +| System.Data.SqlTypes;SqlInt64;op_Modulus;(System.Data.SqlTypes.SqlInt64,System.Data.SqlTypes.SqlInt64);summary;df-generated | +| System.Data.SqlTypes;SqlInt64;op_Multiply;(System.Data.SqlTypes.SqlInt64,System.Data.SqlTypes.SqlInt64);summary;df-generated | +| System.Data.SqlTypes;SqlInt64;op_OnesComplement;(System.Data.SqlTypes.SqlInt64);summary;df-generated | +| System.Data.SqlTypes;SqlInt64;op_Subtraction;(System.Data.SqlTypes.SqlInt64,System.Data.SqlTypes.SqlInt64);summary;df-generated | +| System.Data.SqlTypes;SqlInt64;op_UnaryNegation;(System.Data.SqlTypes.SqlInt64);summary;df-generated | | System.Data.SqlTypes;SqlMoney;Add;(System.Data.SqlTypes.SqlMoney,System.Data.SqlTypes.SqlMoney);summary;df-generated | | System.Data.SqlTypes;SqlMoney;CompareTo;(System.Data.SqlTypes.SqlMoney);summary;df-generated | | System.Data.SqlTypes;SqlMoney;CompareTo;(System.Object);summary;df-generated | @@ -22474,6 +22635,17 @@ neutral | System.Data.SqlTypes;SqlMoney;WriteXml;(System.Xml.XmlWriter);summary;df-generated | | System.Data.SqlTypes;SqlMoney;get_IsNull;();summary;df-generated | | System.Data.SqlTypes;SqlMoney;get_Value;();summary;df-generated | +| System.Data.SqlTypes;SqlMoney;op_Addition;(System.Data.SqlTypes.SqlMoney,System.Data.SqlTypes.SqlMoney);summary;df-generated | +| System.Data.SqlTypes;SqlMoney;op_Division;(System.Data.SqlTypes.SqlMoney,System.Data.SqlTypes.SqlMoney);summary;df-generated | +| System.Data.SqlTypes;SqlMoney;op_Equality;(System.Data.SqlTypes.SqlMoney,System.Data.SqlTypes.SqlMoney);summary;df-generated | +| System.Data.SqlTypes;SqlMoney;op_GreaterThan;(System.Data.SqlTypes.SqlMoney,System.Data.SqlTypes.SqlMoney);summary;df-generated | +| System.Data.SqlTypes;SqlMoney;op_GreaterThanOrEqual;(System.Data.SqlTypes.SqlMoney,System.Data.SqlTypes.SqlMoney);summary;df-generated | +| System.Data.SqlTypes;SqlMoney;op_Inequality;(System.Data.SqlTypes.SqlMoney,System.Data.SqlTypes.SqlMoney);summary;df-generated | +| System.Data.SqlTypes;SqlMoney;op_LessThan;(System.Data.SqlTypes.SqlMoney,System.Data.SqlTypes.SqlMoney);summary;df-generated | +| System.Data.SqlTypes;SqlMoney;op_LessThanOrEqual;(System.Data.SqlTypes.SqlMoney,System.Data.SqlTypes.SqlMoney);summary;df-generated | +| System.Data.SqlTypes;SqlMoney;op_Multiply;(System.Data.SqlTypes.SqlMoney,System.Data.SqlTypes.SqlMoney);summary;df-generated | +| System.Data.SqlTypes;SqlMoney;op_Subtraction;(System.Data.SqlTypes.SqlMoney,System.Data.SqlTypes.SqlMoney);summary;df-generated | +| System.Data.SqlTypes;SqlMoney;op_UnaryNegation;(System.Data.SqlTypes.SqlMoney);summary;df-generated | | System.Data.SqlTypes;SqlNotFilledException;SqlNotFilledException;();summary;df-generated | | System.Data.SqlTypes;SqlNotFilledException;SqlNotFilledException;(System.String);summary;df-generated | | System.Data.SqlTypes;SqlNotFilledException;SqlNotFilledException;(System.String,System.Exception);summary;df-generated | @@ -22513,6 +22685,17 @@ neutral | System.Data.SqlTypes;SqlSingle;WriteXml;(System.Xml.XmlWriter);summary;df-generated | | System.Data.SqlTypes;SqlSingle;get_IsNull;();summary;df-generated | | System.Data.SqlTypes;SqlSingle;get_Value;();summary;df-generated | +| System.Data.SqlTypes;SqlSingle;op_Addition;(System.Data.SqlTypes.SqlSingle,System.Data.SqlTypes.SqlSingle);summary;df-generated | +| System.Data.SqlTypes;SqlSingle;op_Division;(System.Data.SqlTypes.SqlSingle,System.Data.SqlTypes.SqlSingle);summary;df-generated | +| System.Data.SqlTypes;SqlSingle;op_Equality;(System.Data.SqlTypes.SqlSingle,System.Data.SqlTypes.SqlSingle);summary;df-generated | +| System.Data.SqlTypes;SqlSingle;op_GreaterThan;(System.Data.SqlTypes.SqlSingle,System.Data.SqlTypes.SqlSingle);summary;df-generated | +| System.Data.SqlTypes;SqlSingle;op_GreaterThanOrEqual;(System.Data.SqlTypes.SqlSingle,System.Data.SqlTypes.SqlSingle);summary;df-generated | +| System.Data.SqlTypes;SqlSingle;op_Inequality;(System.Data.SqlTypes.SqlSingle,System.Data.SqlTypes.SqlSingle);summary;df-generated | +| System.Data.SqlTypes;SqlSingle;op_LessThan;(System.Data.SqlTypes.SqlSingle,System.Data.SqlTypes.SqlSingle);summary;df-generated | +| System.Data.SqlTypes;SqlSingle;op_LessThanOrEqual;(System.Data.SqlTypes.SqlSingle,System.Data.SqlTypes.SqlSingle);summary;df-generated | +| System.Data.SqlTypes;SqlSingle;op_Multiply;(System.Data.SqlTypes.SqlSingle,System.Data.SqlTypes.SqlSingle);summary;df-generated | +| System.Data.SqlTypes;SqlSingle;op_Subtraction;(System.Data.SqlTypes.SqlSingle,System.Data.SqlTypes.SqlSingle);summary;df-generated | +| System.Data.SqlTypes;SqlSingle;op_UnaryNegation;(System.Data.SqlTypes.SqlSingle);summary;df-generated | | System.Data.SqlTypes;SqlString;CompareOptionsFromSqlCompareOptions;(System.Data.SqlTypes.SqlCompareOptions);summary;df-generated | | System.Data.SqlTypes;SqlString;CompareTo;(System.Data.SqlTypes.SqlString);summary;df-generated | | System.Data.SqlTypes;SqlString;CompareTo;(System.Object);summary;df-generated | @@ -22546,6 +22729,12 @@ neutral | System.Data.SqlTypes;SqlString;get_IsNull;();summary;df-generated | | System.Data.SqlTypes;SqlString;get_LCID;();summary;df-generated | | System.Data.SqlTypes;SqlString;get_SqlCompareOptions;();summary;df-generated | +| System.Data.SqlTypes;SqlString;op_Equality;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);summary;df-generated | +| System.Data.SqlTypes;SqlString;op_GreaterThan;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);summary;df-generated | +| System.Data.SqlTypes;SqlString;op_GreaterThanOrEqual;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);summary;df-generated | +| System.Data.SqlTypes;SqlString;op_Inequality;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);summary;df-generated | +| System.Data.SqlTypes;SqlString;op_LessThan;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);summary;df-generated | +| System.Data.SqlTypes;SqlString;op_LessThanOrEqual;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);summary;df-generated | | System.Data.SqlTypes;SqlTruncateException;SqlTruncateException;();summary;df-generated | | System.Data.SqlTypes;SqlTruncateException;SqlTruncateException;(System.String);summary;df-generated | | System.Data.SqlTypes;SqlTruncateException;SqlTruncateException;(System.String,System.Exception);summary;df-generated | @@ -23693,6 +23882,8 @@ neutral | System.Diagnostics.SymbolStore;SymbolToken;GetHashCode;();summary;df-generated | | System.Diagnostics.SymbolStore;SymbolToken;GetToken;();summary;df-generated | | System.Diagnostics.SymbolStore;SymbolToken;SymbolToken;(System.Int32);summary;df-generated | +| System.Diagnostics.SymbolStore;SymbolToken;op_Equality;(System.Diagnostics.SymbolStore.SymbolToken,System.Diagnostics.SymbolStore.SymbolToken);summary;df-generated | +| System.Diagnostics.SymbolStore;SymbolToken;op_Inequality;(System.Diagnostics.SymbolStore.SymbolToken,System.Diagnostics.SymbolStore.SymbolToken);summary;df-generated | | System.Diagnostics.Tracing;DiagnosticCounter;AddMetadata;(System.String,System.String);summary;df-generated | | System.Diagnostics.Tracing;DiagnosticCounter;Dispose;();summary;df-generated | | System.Diagnostics.Tracing;DiagnosticCounter;get_EventSource;();summary;df-generated | @@ -23870,6 +24061,8 @@ neutral | System.Diagnostics;ActivityContext;get_TraceFlags;();summary;df-generated | | System.Diagnostics;ActivityContext;get_TraceId;();summary;df-generated | | System.Diagnostics;ActivityContext;get_TraceState;();summary;df-generated | +| System.Diagnostics;ActivityContext;op_Equality;(System.Diagnostics.ActivityContext,System.Diagnostics.ActivityContext);summary;df-generated | +| System.Diagnostics;ActivityContext;op_Inequality;(System.Diagnostics.ActivityContext,System.Diagnostics.ActivityContext);summary;df-generated | | System.Diagnostics;ActivityCreationOptions<>;get_Kind;();summary;df-generated | | System.Diagnostics;ActivityCreationOptions<>;get_Links;();summary;df-generated | | System.Diagnostics;ActivityCreationOptions<>;get_Name;();summary;df-generated | @@ -23888,6 +24081,8 @@ neutral | System.Diagnostics;ActivityLink;GetHashCode;();summary;df-generated | | System.Diagnostics;ActivityLink;get_Context;();summary;df-generated | | System.Diagnostics;ActivityLink;get_Tags;();summary;df-generated | +| System.Diagnostics;ActivityLink;op_Equality;(System.Diagnostics.ActivityLink,System.Diagnostics.ActivityLink);summary;df-generated | +| System.Diagnostics;ActivityLink;op_Inequality;(System.Diagnostics.ActivityLink,System.Diagnostics.ActivityLink);summary;df-generated | | System.Diagnostics;ActivityListener;ActivityListener;();summary;df-generated | | System.Diagnostics;ActivityListener;Dispose;();summary;df-generated | | System.Diagnostics;ActivityListener;get_ActivityStarted;();summary;df-generated | @@ -23914,6 +24109,8 @@ neutral | System.Diagnostics;ActivitySpanId;Equals;(System.Diagnostics.ActivitySpanId);summary;df-generated | | System.Diagnostics;ActivitySpanId;Equals;(System.Object);summary;df-generated | | System.Diagnostics;ActivitySpanId;GetHashCode;();summary;df-generated | +| System.Diagnostics;ActivitySpanId;op_Equality;(System.Diagnostics.ActivitySpanId,System.Diagnostics.ActivitySpanId);summary;df-generated | +| System.Diagnostics;ActivitySpanId;op_Inequality;(System.Diagnostics.ActivitySpanId,System.Diagnostics.ActivitySpanId);summary;df-generated | | System.Diagnostics;ActivityTagsCollection+Enumerator;Dispose;();summary;df-generated | | System.Diagnostics;ActivityTagsCollection+Enumerator;MoveNext;();summary;df-generated | | System.Diagnostics;ActivityTagsCollection+Enumerator;Reset;();summary;df-generated | @@ -23932,6 +24129,8 @@ neutral | System.Diagnostics;ActivityTraceId;Equals;(System.Diagnostics.ActivityTraceId);summary;df-generated | | System.Diagnostics;ActivityTraceId;Equals;(System.Object);summary;df-generated | | System.Diagnostics;ActivityTraceId;GetHashCode;();summary;df-generated | +| System.Diagnostics;ActivityTraceId;op_Equality;(System.Diagnostics.ActivityTraceId,System.Diagnostics.ActivityTraceId);summary;df-generated | +| System.Diagnostics;ActivityTraceId;op_Inequality;(System.Diagnostics.ActivityTraceId,System.Diagnostics.ActivityTraceId);summary;df-generated | | System.Diagnostics;BooleanSwitch;BooleanSwitch;(System.String,System.String);summary;df-generated | | System.Diagnostics;BooleanSwitch;BooleanSwitch;(System.String,System.String,System.String);summary;df-generated | | System.Diagnostics;BooleanSwitch;OnValueChanged;();summary;df-generated | @@ -25081,6 +25280,8 @@ neutral | System.Drawing.Printing;Margins;get_Left;();summary;df-generated | | System.Drawing.Printing;Margins;get_Right;();summary;df-generated | | System.Drawing.Printing;Margins;get_Top;();summary;df-generated | +| System.Drawing.Printing;Margins;op_Equality;(System.Drawing.Printing.Margins,System.Drawing.Printing.Margins);summary;df-generated | +| System.Drawing.Printing;Margins;op_Inequality;(System.Drawing.Printing.Margins,System.Drawing.Printing.Margins);summary;df-generated | | System.Drawing.Printing;Margins;set_Bottom;(System.Int32);summary;df-generated | | System.Drawing.Printing;Margins;set_Left;(System.Int32);summary;df-generated | | System.Drawing.Printing;Margins;set_Right;(System.Int32);summary;df-generated | @@ -25398,6 +25599,8 @@ neutral | System.Drawing;CharacterRange;GetHashCode;();summary;df-generated | | System.Drawing;CharacterRange;get_First;();summary;df-generated | | System.Drawing;CharacterRange;get_Length;();summary;df-generated | +| System.Drawing;CharacterRange;op_Equality;(System.Drawing.CharacterRange,System.Drawing.CharacterRange);summary;df-generated | +| System.Drawing;CharacterRange;op_Inequality;(System.Drawing.CharacterRange,System.Drawing.CharacterRange);summary;df-generated | | System.Drawing;CharacterRange;set_First;(System.Int32);summary;df-generated | | System.Drawing;CharacterRange;set_Length;(System.Int32);summary;df-generated | | System.Drawing;Color;Equals;(System.Drawing.Color);summary;df-generated | @@ -25563,6 +25766,8 @@ neutral | System.Drawing;Color;get_WhiteSmoke;();summary;df-generated | | System.Drawing;Color;get_Yellow;();summary;df-generated | | System.Drawing;Color;get_YellowGreen;();summary;df-generated | +| System.Drawing;Color;op_Equality;(System.Drawing.Color,System.Drawing.Color);summary;df-generated | +| System.Drawing;Color;op_Inequality;(System.Drawing.Color,System.Drawing.Color);summary;df-generated | | System.Drawing;ColorConverter;CanConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | | System.Drawing;ColorConverter;CanConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | | System.Drawing;ColorConverter;ColorConverter;();summary;df-generated | @@ -26125,6 +26330,10 @@ neutral | System.Drawing;Point;get_IsEmpty;();summary;df-generated | | System.Drawing;Point;get_X;();summary;df-generated | | System.Drawing;Point;get_Y;();summary;df-generated | +| System.Drawing;Point;op_Addition;(System.Drawing.Point,System.Drawing.Size);summary;df-generated | +| System.Drawing;Point;op_Equality;(System.Drawing.Point,System.Drawing.Point);summary;df-generated | +| System.Drawing;Point;op_Inequality;(System.Drawing.Point,System.Drawing.Point);summary;df-generated | +| System.Drawing;Point;op_Subtraction;(System.Drawing.Point,System.Drawing.Size);summary;df-generated | | System.Drawing;Point;set_X;(System.Int32);summary;df-generated | | System.Drawing;Point;set_Y;(System.Int32);summary;df-generated | | System.Drawing;PointConverter;CanConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | @@ -26148,6 +26357,12 @@ neutral | System.Drawing;PointF;get_IsEmpty;();summary;df-generated | | System.Drawing;PointF;get_X;();summary;df-generated | | System.Drawing;PointF;get_Y;();summary;df-generated | +| System.Drawing;PointF;op_Addition;(System.Drawing.PointF,System.Drawing.Size);summary;df-generated | +| System.Drawing;PointF;op_Addition;(System.Drawing.PointF,System.Drawing.SizeF);summary;df-generated | +| System.Drawing;PointF;op_Equality;(System.Drawing.PointF,System.Drawing.PointF);summary;df-generated | +| System.Drawing;PointF;op_Inequality;(System.Drawing.PointF,System.Drawing.PointF);summary;df-generated | +| System.Drawing;PointF;op_Subtraction;(System.Drawing.PointF,System.Drawing.Size);summary;df-generated | +| System.Drawing;PointF;op_Subtraction;(System.Drawing.PointF,System.Drawing.SizeF);summary;df-generated | | System.Drawing;PointF;set_X;(System.Single);summary;df-generated | | System.Drawing;PointF;set_Y;(System.Single);summary;df-generated | | System.Drawing;Rectangle;Ceiling;(System.Drawing.RectangleF);summary;df-generated | @@ -26182,6 +26397,8 @@ neutral | System.Drawing;Rectangle;get_Width;();summary;df-generated | | System.Drawing;Rectangle;get_X;();summary;df-generated | | System.Drawing;Rectangle;get_Y;();summary;df-generated | +| System.Drawing;Rectangle;op_Equality;(System.Drawing.Rectangle,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Rectangle;op_Inequality;(System.Drawing.Rectangle,System.Drawing.Rectangle);summary;df-generated | | System.Drawing;Rectangle;set_Height;(System.Int32);summary;df-generated | | System.Drawing;Rectangle;set_Location;(System.Drawing.Point);summary;df-generated | | System.Drawing;Rectangle;set_Size;(System.Drawing.Size);summary;df-generated | @@ -26226,6 +26443,8 @@ neutral | System.Drawing;RectangleF;get_Width;();summary;df-generated | | System.Drawing;RectangleF;get_X;();summary;df-generated | | System.Drawing;RectangleF;get_Y;();summary;df-generated | +| System.Drawing;RectangleF;op_Equality;(System.Drawing.RectangleF,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;RectangleF;op_Inequality;(System.Drawing.RectangleF,System.Drawing.RectangleF);summary;df-generated | | System.Drawing;RectangleF;set_Height;(System.Single);summary;df-generated | | System.Drawing;RectangleF;set_Location;(System.Drawing.PointF);summary;df-generated | | System.Drawing;RectangleF;set_Size;(System.Drawing.SizeF);summary;df-generated | @@ -26302,6 +26521,16 @@ neutral | System.Drawing;Size;get_Height;();summary;df-generated | | System.Drawing;Size;get_IsEmpty;();summary;df-generated | | System.Drawing;Size;get_Width;();summary;df-generated | +| System.Drawing;Size;op_Addition;(System.Drawing.Size,System.Drawing.Size);summary;df-generated | +| System.Drawing;Size;op_Division;(System.Drawing.Size,System.Int32);summary;df-generated | +| System.Drawing;Size;op_Division;(System.Drawing.Size,System.Single);summary;df-generated | +| System.Drawing;Size;op_Equality;(System.Drawing.Size,System.Drawing.Size);summary;df-generated | +| System.Drawing;Size;op_Inequality;(System.Drawing.Size,System.Drawing.Size);summary;df-generated | +| System.Drawing;Size;op_Multiply;(System.Drawing.Size,System.Int32);summary;df-generated | +| System.Drawing;Size;op_Multiply;(System.Drawing.Size,System.Single);summary;df-generated | +| System.Drawing;Size;op_Multiply;(System.Int32,System.Drawing.Size);summary;df-generated | +| System.Drawing;Size;op_Multiply;(System.Single,System.Drawing.Size);summary;df-generated | +| System.Drawing;Size;op_Subtraction;(System.Drawing.Size,System.Drawing.Size);summary;df-generated | | System.Drawing;Size;set_Height;(System.Int32);summary;df-generated | | System.Drawing;Size;set_Width;(System.Int32);summary;df-generated | | System.Drawing;SizeConverter;CanConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | @@ -26327,6 +26556,13 @@ neutral | System.Drawing;SizeF;get_Height;();summary;df-generated | | System.Drawing;SizeF;get_IsEmpty;();summary;df-generated | | System.Drawing;SizeF;get_Width;();summary;df-generated | +| System.Drawing;SizeF;op_Addition;(System.Drawing.SizeF,System.Drawing.SizeF);summary;df-generated | +| System.Drawing;SizeF;op_Division;(System.Drawing.SizeF,System.Single);summary;df-generated | +| System.Drawing;SizeF;op_Equality;(System.Drawing.SizeF,System.Drawing.SizeF);summary;df-generated | +| System.Drawing;SizeF;op_Inequality;(System.Drawing.SizeF,System.Drawing.SizeF);summary;df-generated | +| System.Drawing;SizeF;op_Multiply;(System.Drawing.SizeF,System.Single);summary;df-generated | +| System.Drawing;SizeF;op_Multiply;(System.Single,System.Drawing.SizeF);summary;df-generated | +| System.Drawing;SizeF;op_Subtraction;(System.Drawing.SizeF,System.Drawing.SizeF);summary;df-generated | | System.Drawing;SizeF;set_Height;(System.Single);summary;df-generated | | System.Drawing;SizeF;set_Width;(System.Single);summary;df-generated | | System.Drawing;SizeFConverter;CanConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | @@ -26666,6 +26902,8 @@ neutral | System.Formats.Asn1;Asn1Tag;get_IsConstructed;();summary;df-generated | | System.Formats.Asn1;Asn1Tag;get_TagClass;();summary;df-generated | | System.Formats.Asn1;Asn1Tag;get_TagValue;();summary;df-generated | +| System.Formats.Asn1;Asn1Tag;op_Equality;(System.Formats.Asn1.Asn1Tag,System.Formats.Asn1.Asn1Tag);summary;df-generated | +| System.Formats.Asn1;Asn1Tag;op_Inequality;(System.Formats.Asn1.Asn1Tag,System.Formats.Asn1.Asn1Tag);summary;df-generated | | System.Formats.Asn1;AsnContentException;AsnContentException;();summary;df-generated | | System.Formats.Asn1;AsnContentException;AsnContentException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | | System.Formats.Asn1;AsnContentException;AsnContentException;(System.String);summary;df-generated | @@ -27233,6 +27471,8 @@ neutral | System.Globalization;SortVersion;Equals;(System.Object);summary;df-generated | | System.Globalization;SortVersion;GetHashCode;();summary;df-generated | | System.Globalization;SortVersion;get_FullVersion;();summary;df-generated | +| System.Globalization;SortVersion;op_Equality;(System.Globalization.SortVersion,System.Globalization.SortVersion);summary;df-generated | +| System.Globalization;SortVersion;op_Inequality;(System.Globalization.SortVersion,System.Globalization.SortVersion);summary;df-generated | | System.Globalization;StringInfo;Equals;(System.Object);summary;df-generated | | System.Globalization;StringInfo;GetHashCode;();summary;df-generated | | System.Globalization;StringInfo;GetNextTextElementLength;(System.ReadOnlySpan);summary;df-generated | @@ -29296,6 +29536,8 @@ neutral | System.Net.Http;HttpMethod;get_Post;();summary;df-generated | | System.Net.Http;HttpMethod;get_Put;();summary;df-generated | | System.Net.Http;HttpMethod;get_Trace;();summary;df-generated | +| System.Net.Http;HttpMethod;op_Equality;(System.Net.Http.HttpMethod,System.Net.Http.HttpMethod);summary;df-generated | +| System.Net.Http;HttpMethod;op_Inequality;(System.Net.Http.HttpMethod,System.Net.Http.HttpMethod);summary;df-generated | | System.Net.Http;HttpRequestException;HttpRequestException;();summary;df-generated | | System.Net.Http;HttpRequestException;HttpRequestException;(System.String);summary;df-generated | | System.Net.Http;HttpRequestException;HttpRequestException;(System.String,System.Exception);summary;df-generated | @@ -29871,6 +30113,8 @@ neutral | System.Net.Security;SslApplicationProtocol;GetHashCode;();summary;df-generated | | System.Net.Security;SslApplicationProtocol;SslApplicationProtocol;(System.Byte[]);summary;df-generated | | System.Net.Security;SslApplicationProtocol;SslApplicationProtocol;(System.String);summary;df-generated | +| System.Net.Security;SslApplicationProtocol;op_Equality;(System.Net.Security.SslApplicationProtocol,System.Net.Security.SslApplicationProtocol);summary;df-generated | +| System.Net.Security;SslApplicationProtocol;op_Inequality;(System.Net.Security.SslApplicationProtocol,System.Net.Security.SslApplicationProtocol);summary;df-generated | | System.Net.Security;SslClientAuthenticationOptions;get_AllowRenegotiation;();summary;df-generated | | System.Net.Security;SslClientAuthenticationOptions;get_ApplicationProtocols;();summary;df-generated | | System.Net.Security;SslClientAuthenticationOptions;get_CertificateRevocationCheckMode;();summary;df-generated | @@ -29972,6 +30216,8 @@ neutral | System.Net.Sockets;IPPacketInformation;Equals;(System.Object);summary;df-generated | | System.Net.Sockets;IPPacketInformation;GetHashCode;();summary;df-generated | | System.Net.Sockets;IPPacketInformation;get_Interface;();summary;df-generated | +| System.Net.Sockets;IPPacketInformation;op_Equality;(System.Net.Sockets.IPPacketInformation,System.Net.Sockets.IPPacketInformation);summary;df-generated | +| System.Net.Sockets;IPPacketInformation;op_Inequality;(System.Net.Sockets.IPPacketInformation,System.Net.Sockets.IPPacketInformation);summary;df-generated | | System.Net.Sockets;IPv6MulticastOption;get_InterfaceIndex;();summary;df-generated | | System.Net.Sockets;IPv6MulticastOption;set_InterfaceIndex;(System.Int64);summary;df-generated | | System.Net.Sockets;LingerOption;LingerOption;(System.Boolean,System.Int32);summary;df-generated | @@ -30280,6 +30526,8 @@ neutral | System.Net.Sockets;UdpReceiveResult;Equals;(System.Net.Sockets.UdpReceiveResult);summary;df-generated | | System.Net.Sockets;UdpReceiveResult;Equals;(System.Object);summary;df-generated | | System.Net.Sockets;UdpReceiveResult;GetHashCode;();summary;df-generated | +| System.Net.Sockets;UdpReceiveResult;op_Equality;(System.Net.Sockets.UdpReceiveResult,System.Net.Sockets.UdpReceiveResult);summary;df-generated | +| System.Net.Sockets;UdpReceiveResult;op_Inequality;(System.Net.Sockets.UdpReceiveResult,System.Net.Sockets.UdpReceiveResult);summary;df-generated | | System.Net.Sockets;UnixDomainSocketEndPoint;Create;(System.Net.SocketAddress);summary;df-generated | | System.Net.Sockets;UnixDomainSocketEndPoint;Serialize;();summary;df-generated | | System.Net.Sockets;UnixDomainSocketEndPoint;UnixDomainSocketEndPoint;(System.String);summary;df-generated | @@ -31036,6 +31284,30 @@ neutral | System.Numerics;BigInteger;get_One;();summary;df-generated | | System.Numerics;BigInteger;get_Sign;();summary;df-generated | | System.Numerics;BigInteger;get_Zero;();summary;df-generated | +| System.Numerics;BigInteger;op_Equality;(System.Int64,System.Numerics.BigInteger);summary;df-generated | +| System.Numerics;BigInteger;op_Equality;(System.Numerics.BigInteger,System.Int64);summary;df-generated | +| System.Numerics;BigInteger;op_Equality;(System.Numerics.BigInteger,System.UInt64);summary;df-generated | +| System.Numerics;BigInteger;op_Equality;(System.UInt64,System.Numerics.BigInteger);summary;df-generated | +| System.Numerics;BigInteger;op_GreaterThan;(System.Int64,System.Numerics.BigInteger);summary;df-generated | +| System.Numerics;BigInteger;op_GreaterThan;(System.Numerics.BigInteger,System.Int64);summary;df-generated | +| System.Numerics;BigInteger;op_GreaterThan;(System.Numerics.BigInteger,System.UInt64);summary;df-generated | +| System.Numerics;BigInteger;op_GreaterThan;(System.UInt64,System.Numerics.BigInteger);summary;df-generated | +| System.Numerics;BigInteger;op_GreaterThanOrEqual;(System.Int64,System.Numerics.BigInteger);summary;df-generated | +| System.Numerics;BigInteger;op_GreaterThanOrEqual;(System.Numerics.BigInteger,System.Int64);summary;df-generated | +| System.Numerics;BigInteger;op_GreaterThanOrEqual;(System.Numerics.BigInteger,System.UInt64);summary;df-generated | +| System.Numerics;BigInteger;op_GreaterThanOrEqual;(System.UInt64,System.Numerics.BigInteger);summary;df-generated | +| System.Numerics;BigInteger;op_Inequality;(System.Int64,System.Numerics.BigInteger);summary;df-generated | +| System.Numerics;BigInteger;op_Inequality;(System.Numerics.BigInteger,System.Int64);summary;df-generated | +| System.Numerics;BigInteger;op_Inequality;(System.Numerics.BigInteger,System.UInt64);summary;df-generated | +| System.Numerics;BigInteger;op_Inequality;(System.UInt64,System.Numerics.BigInteger);summary;df-generated | +| System.Numerics;BigInteger;op_LessThan;(System.Int64,System.Numerics.BigInteger);summary;df-generated | +| System.Numerics;BigInteger;op_LessThan;(System.Numerics.BigInteger,System.Int64);summary;df-generated | +| System.Numerics;BigInteger;op_LessThan;(System.Numerics.BigInteger,System.UInt64);summary;df-generated | +| System.Numerics;BigInteger;op_LessThan;(System.UInt64,System.Numerics.BigInteger);summary;df-generated | +| System.Numerics;BigInteger;op_LessThanOrEqual;(System.Int64,System.Numerics.BigInteger);summary;df-generated | +| System.Numerics;BigInteger;op_LessThanOrEqual;(System.Numerics.BigInteger,System.Int64);summary;df-generated | +| System.Numerics;BigInteger;op_LessThanOrEqual;(System.Numerics.BigInteger,System.UInt64);summary;df-generated | +| System.Numerics;BigInteger;op_LessThanOrEqual;(System.UInt64,System.Numerics.BigInteger);summary;df-generated | | System.Numerics;BitOperations;IsPow2;(System.Int32);summary;df-generated | | System.Numerics;BitOperations;IsPow2;(System.Int64);summary;df-generated | | System.Numerics;BitOperations;IsPow2;(System.IntPtr);summary;df-generated | @@ -31112,6 +31384,14 @@ neutral | System.Numerics;Complex;get_Magnitude;();summary;df-generated | | System.Numerics;Complex;get_Phase;();summary;df-generated | | System.Numerics;Complex;get_Real;();summary;df-generated | +| System.Numerics;Complex;op_Addition;(System.Double,System.Numerics.Complex);summary;df-generated | +| System.Numerics;Complex;op_Addition;(System.Numerics.Complex,System.Double);summary;df-generated | +| System.Numerics;Complex;op_Division;(System.Double,System.Numerics.Complex);summary;df-generated | +| System.Numerics;Complex;op_Division;(System.Numerics.Complex,System.Double);summary;df-generated | +| System.Numerics;Complex;op_Multiply;(System.Double,System.Numerics.Complex);summary;df-generated | +| System.Numerics;Complex;op_Multiply;(System.Numerics.Complex,System.Double);summary;df-generated | +| System.Numerics;Complex;op_Subtraction;(System.Double,System.Numerics.Complex);summary;df-generated | +| System.Numerics;Complex;op_Subtraction;(System.Numerics.Complex,System.Double);summary;df-generated | | System.Numerics;Matrix3x2;Add;(System.Numerics.Matrix3x2,System.Numerics.Matrix3x2);summary;df-generated | | System.Numerics;Matrix3x2;CreateRotation;(System.Single);summary;df-generated | | System.Numerics;Matrix3x2;CreateRotation;(System.Single,System.Numerics.Vector2);summary;df-generated | @@ -31141,6 +31421,13 @@ neutral | System.Numerics;Matrix3x2;get_IsIdentity;();summary;df-generated | | System.Numerics;Matrix3x2;get_Item;(System.Int32,System.Int32);summary;df-generated | | System.Numerics;Matrix3x2;get_Translation;();summary;df-generated | +| System.Numerics;Matrix3x2;op_Addition;(System.Numerics.Matrix3x2,System.Numerics.Matrix3x2);summary;df-generated | +| System.Numerics;Matrix3x2;op_Equality;(System.Numerics.Matrix3x2,System.Numerics.Matrix3x2);summary;df-generated | +| System.Numerics;Matrix3x2;op_Inequality;(System.Numerics.Matrix3x2,System.Numerics.Matrix3x2);summary;df-generated | +| System.Numerics;Matrix3x2;op_Multiply;(System.Numerics.Matrix3x2,System.Numerics.Matrix3x2);summary;df-generated | +| System.Numerics;Matrix3x2;op_Multiply;(System.Numerics.Matrix3x2,System.Single);summary;df-generated | +| System.Numerics;Matrix3x2;op_Subtraction;(System.Numerics.Matrix3x2,System.Numerics.Matrix3x2);summary;df-generated | +| System.Numerics;Matrix3x2;op_UnaryNegation;(System.Numerics.Matrix3x2);summary;df-generated | | System.Numerics;Matrix3x2;set_Item;(System.Int32,System.Int32,System.Single);summary;df-generated | | System.Numerics;Matrix3x2;set_Translation;(System.Numerics.Vector2);summary;df-generated | | System.Numerics;Matrix4x4;CreateBillboard;(System.Numerics.Vector3,System.Numerics.Vector3,System.Numerics.Vector3,System.Numerics.Vector3);summary;df-generated | @@ -31185,6 +31472,8 @@ neutral | System.Numerics;Matrix4x4;get_IsIdentity;();summary;df-generated | | System.Numerics;Matrix4x4;get_Item;(System.Int32,System.Int32);summary;df-generated | | System.Numerics;Matrix4x4;get_Translation;();summary;df-generated | +| System.Numerics;Matrix4x4;op_Equality;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);summary;df-generated | +| System.Numerics;Matrix4x4;op_Inequality;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);summary;df-generated | | System.Numerics;Matrix4x4;set_Item;(System.Int32,System.Int32,System.Single);summary;df-generated | | System.Numerics;Matrix4x4;set_Translation;(System.Numerics.Vector3);summary;df-generated | | System.Numerics;Plane;CreateFromVertices;(System.Numerics.Vector3,System.Numerics.Vector3,System.Numerics.Vector3);summary;df-generated | @@ -31198,6 +31487,8 @@ neutral | System.Numerics;Plane;Plane;(System.Single,System.Single,System.Single,System.Single);summary;df-generated | | System.Numerics;Plane;Transform;(System.Numerics.Plane,System.Numerics.Matrix4x4);summary;df-generated | | System.Numerics;Plane;Transform;(System.Numerics.Plane,System.Numerics.Quaternion);summary;df-generated | +| System.Numerics;Plane;op_Equality;(System.Numerics.Plane,System.Numerics.Plane);summary;df-generated | +| System.Numerics;Plane;op_Inequality;(System.Numerics.Plane,System.Numerics.Plane);summary;df-generated | | System.Numerics;Quaternion;Add;(System.Numerics.Quaternion,System.Numerics.Quaternion);summary;df-generated | | System.Numerics;Quaternion;Concatenate;(System.Numerics.Quaternion,System.Numerics.Quaternion);summary;df-generated | | System.Numerics;Quaternion;Conjugate;(System.Numerics.Quaternion);summary;df-generated | @@ -31226,6 +31517,14 @@ neutral | System.Numerics;Quaternion;get_IsIdentity;();summary;df-generated | | System.Numerics;Quaternion;get_Item;(System.Int32);summary;df-generated | | System.Numerics;Quaternion;get_Zero;();summary;df-generated | +| System.Numerics;Quaternion;op_Addition;(System.Numerics.Quaternion,System.Numerics.Quaternion);summary;df-generated | +| System.Numerics;Quaternion;op_Division;(System.Numerics.Quaternion,System.Numerics.Quaternion);summary;df-generated | +| System.Numerics;Quaternion;op_Equality;(System.Numerics.Quaternion,System.Numerics.Quaternion);summary;df-generated | +| System.Numerics;Quaternion;op_Inequality;(System.Numerics.Quaternion,System.Numerics.Quaternion);summary;df-generated | +| System.Numerics;Quaternion;op_Multiply;(System.Numerics.Quaternion,System.Numerics.Quaternion);summary;df-generated | +| System.Numerics;Quaternion;op_Multiply;(System.Numerics.Quaternion,System.Single);summary;df-generated | +| System.Numerics;Quaternion;op_Subtraction;(System.Numerics.Quaternion,System.Numerics.Quaternion);summary;df-generated | +| System.Numerics;Quaternion;op_UnaryNegation;(System.Numerics.Quaternion);summary;df-generated | | System.Numerics;Quaternion;set_Item;(System.Int32,System.Single);summary;df-generated | | System.Numerics;Vector2;Abs;(System.Numerics.Vector2);summary;df-generated | | System.Numerics;Vector2;Add;(System.Numerics.Vector2,System.Numerics.Vector2);summary;df-generated | @@ -31270,6 +31569,16 @@ neutral | System.Numerics;Vector2;get_UnitX;();summary;df-generated | | System.Numerics;Vector2;get_UnitY;();summary;df-generated | | System.Numerics;Vector2;get_Zero;();summary;df-generated | +| System.Numerics;Vector2;op_Addition;(System.Numerics.Vector2,System.Numerics.Vector2);summary;df-generated | +| System.Numerics;Vector2;op_Division;(System.Numerics.Vector2,System.Numerics.Vector2);summary;df-generated | +| System.Numerics;Vector2;op_Division;(System.Numerics.Vector2,System.Single);summary;df-generated | +| System.Numerics;Vector2;op_Equality;(System.Numerics.Vector2,System.Numerics.Vector2);summary;df-generated | +| System.Numerics;Vector2;op_Inequality;(System.Numerics.Vector2,System.Numerics.Vector2);summary;df-generated | +| System.Numerics;Vector2;op_Multiply;(System.Numerics.Vector2,System.Numerics.Vector2);summary;df-generated | +| System.Numerics;Vector2;op_Multiply;(System.Numerics.Vector2,System.Single);summary;df-generated | +| System.Numerics;Vector2;op_Multiply;(System.Single,System.Numerics.Vector2);summary;df-generated | +| System.Numerics;Vector2;op_Subtraction;(System.Numerics.Vector2,System.Numerics.Vector2);summary;df-generated | +| System.Numerics;Vector2;op_UnaryNegation;(System.Numerics.Vector2);summary;df-generated | | System.Numerics;Vector2;set_Item;(System.Int32,System.Single);summary;df-generated | | System.Numerics;Vector3;Abs;(System.Numerics.Vector3);summary;df-generated | | System.Numerics;Vector3;Add;(System.Numerics.Vector3,System.Numerics.Vector3);summary;df-generated | @@ -31315,6 +31624,16 @@ neutral | System.Numerics;Vector3;get_UnitY;();summary;df-generated | | System.Numerics;Vector3;get_UnitZ;();summary;df-generated | | System.Numerics;Vector3;get_Zero;();summary;df-generated | +| System.Numerics;Vector3;op_Addition;(System.Numerics.Vector3,System.Numerics.Vector3);summary;df-generated | +| System.Numerics;Vector3;op_Division;(System.Numerics.Vector3,System.Numerics.Vector3);summary;df-generated | +| System.Numerics;Vector3;op_Division;(System.Numerics.Vector3,System.Single);summary;df-generated | +| System.Numerics;Vector3;op_Equality;(System.Numerics.Vector3,System.Numerics.Vector3);summary;df-generated | +| System.Numerics;Vector3;op_Inequality;(System.Numerics.Vector3,System.Numerics.Vector3);summary;df-generated | +| System.Numerics;Vector3;op_Multiply;(System.Numerics.Vector3,System.Numerics.Vector3);summary;df-generated | +| System.Numerics;Vector3;op_Multiply;(System.Numerics.Vector3,System.Single);summary;df-generated | +| System.Numerics;Vector3;op_Multiply;(System.Single,System.Numerics.Vector3);summary;df-generated | +| System.Numerics;Vector3;op_Subtraction;(System.Numerics.Vector3,System.Numerics.Vector3);summary;df-generated | +| System.Numerics;Vector3;op_UnaryNegation;(System.Numerics.Vector3);summary;df-generated | | System.Numerics;Vector3;set_Item;(System.Int32,System.Single);summary;df-generated | | System.Numerics;Vector4;Abs;(System.Numerics.Vector4);summary;df-generated | | System.Numerics;Vector4;Add;(System.Numerics.Vector4,System.Numerics.Vector4);summary;df-generated | @@ -31363,6 +31682,16 @@ neutral | System.Numerics;Vector4;get_UnitY;();summary;df-generated | | System.Numerics;Vector4;get_UnitZ;();summary;df-generated | | System.Numerics;Vector4;get_Zero;();summary;df-generated | +| System.Numerics;Vector4;op_Addition;(System.Numerics.Vector4,System.Numerics.Vector4);summary;df-generated | +| System.Numerics;Vector4;op_Division;(System.Numerics.Vector4,System.Numerics.Vector4);summary;df-generated | +| System.Numerics;Vector4;op_Division;(System.Numerics.Vector4,System.Single);summary;df-generated | +| System.Numerics;Vector4;op_Equality;(System.Numerics.Vector4,System.Numerics.Vector4);summary;df-generated | +| System.Numerics;Vector4;op_Inequality;(System.Numerics.Vector4,System.Numerics.Vector4);summary;df-generated | +| System.Numerics;Vector4;op_Multiply;(System.Numerics.Vector4,System.Numerics.Vector4);summary;df-generated | +| System.Numerics;Vector4;op_Multiply;(System.Numerics.Vector4,System.Single);summary;df-generated | +| System.Numerics;Vector4;op_Multiply;(System.Single,System.Numerics.Vector4);summary;df-generated | +| System.Numerics;Vector4;op_Subtraction;(System.Numerics.Vector4,System.Numerics.Vector4);summary;df-generated | +| System.Numerics;Vector4;op_UnaryNegation;(System.Numerics.Vector4);summary;df-generated | | System.Numerics;Vector4;set_Item;(System.Int32,System.Single);summary;df-generated | | System.Numerics;Vector;Add<>;(System.Numerics.Vector,System.Numerics.Vector);summary;df-generated | | System.Numerics;Vector;AndNot<>;(System.Numerics.Vector,System.Numerics.Vector);summary;df-generated | @@ -31481,6 +31810,19 @@ neutral | System.Numerics;Vector<>;get_Item;(System.Int32);summary;df-generated | | System.Numerics;Vector<>;get_One;();summary;df-generated | | System.Numerics;Vector<>;get_Zero;();summary;df-generated | +| System.Numerics;Vector<>;op_Addition;(System.Numerics.Vector<>,System.Numerics.Vector<>);summary;df-generated | +| System.Numerics;Vector<>;op_BitwiseAnd;(System.Numerics.Vector<>,System.Numerics.Vector<>);summary;df-generated | +| System.Numerics;Vector<>;op_BitwiseOr;(System.Numerics.Vector<>,System.Numerics.Vector<>);summary;df-generated | +| System.Numerics;Vector<>;op_Division;(System.Numerics.Vector<>,System.Numerics.Vector<>);summary;df-generated | +| System.Numerics;Vector<>;op_Equality;(System.Numerics.Vector<>,System.Numerics.Vector<>);summary;df-generated | +| System.Numerics;Vector<>;op_ExclusiveOr;(System.Numerics.Vector<>,System.Numerics.Vector<>);summary;df-generated | +| System.Numerics;Vector<>;op_Inequality;(System.Numerics.Vector<>,System.Numerics.Vector<>);summary;df-generated | +| System.Numerics;Vector<>;op_Multiply;(System.Numerics.Vector<>,System.Numerics.Vector<>);summary;df-generated | +| System.Numerics;Vector<>;op_Multiply;(System.Numerics.Vector<>,T);summary;df-generated | +| System.Numerics;Vector<>;op_Multiply;(T,System.Numerics.Vector<>);summary;df-generated | +| System.Numerics;Vector<>;op_OnesComplement;(System.Numerics.Vector<>);summary;df-generated | +| System.Numerics;Vector<>;op_Subtraction;(System.Numerics.Vector<>,System.Numerics.Vector<>);summary;df-generated | +| System.Numerics;Vector<>;op_UnaryNegation;(System.Numerics.Vector<>);summary;df-generated | | System.Reflection.Emit;AssemblyBuilder;Equals;(System.Object);summary;df-generated | | System.Reflection.Emit;AssemblyBuilder;GetCustomAttributes;(System.Boolean);summary;df-generated | | System.Reflection.Emit;AssemblyBuilder;GetCustomAttributes;(System.Type,System.Boolean);summary;df-generated | @@ -31712,6 +32054,8 @@ neutral | System.Reflection.Emit;Label;Equals;(System.Object);summary;df-generated | | System.Reflection.Emit;Label;Equals;(System.Reflection.Emit.Label);summary;df-generated | | System.Reflection.Emit;Label;GetHashCode;();summary;df-generated | +| System.Reflection.Emit;Label;op_Equality;(System.Reflection.Emit.Label,System.Reflection.Emit.Label);summary;df-generated | +| System.Reflection.Emit;Label;op_Inequality;(System.Reflection.Emit.Label,System.Reflection.Emit.Label);summary;df-generated | | System.Reflection.Emit;LocalBuilder;get_IsPinned;();summary;df-generated | | System.Reflection.Emit;LocalBuilder;get_LocalIndex;();summary;df-generated | | System.Reflection.Emit;MethodBuilder;Equals;(System.Object);summary;df-generated | @@ -31770,6 +32114,8 @@ neutral | System.Reflection.Emit;OpCode;get_StackBehaviourPop;();summary;df-generated | | System.Reflection.Emit;OpCode;get_StackBehaviourPush;();summary;df-generated | | System.Reflection.Emit;OpCode;get_Value;();summary;df-generated | +| System.Reflection.Emit;OpCode;op_Equality;(System.Reflection.Emit.OpCode,System.Reflection.Emit.OpCode);summary;df-generated | +| System.Reflection.Emit;OpCode;op_Inequality;(System.Reflection.Emit.OpCode,System.Reflection.Emit.OpCode);summary;df-generated | | System.Reflection.Emit;OpCodes;TakesSingleByteArgument;(System.Reflection.Emit.OpCode);summary;df-generated | | System.Reflection.Emit;ParameterBuilder;SetCustomAttribute;(System.Reflection.ConstructorInfo,System.Byte[]);summary;df-generated | | System.Reflection.Emit;ParameterBuilder;get_Attributes;();summary;df-generated | @@ -31961,6 +32307,8 @@ neutral | System.Reflection.Metadata.Ecma335;LabelHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata.Ecma335;LabelHandle;get_Id;();summary;df-generated | | System.Reflection.Metadata.Ecma335;LabelHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata.Ecma335;LabelHandle;op_Equality;(System.Reflection.Metadata.Ecma335.LabelHandle,System.Reflection.Metadata.Ecma335.LabelHandle);summary;df-generated | +| System.Reflection.Metadata.Ecma335;LabelHandle;op_Inequality;(System.Reflection.Metadata.Ecma335.LabelHandle,System.Reflection.Metadata.Ecma335.LabelHandle);summary;df-generated | | System.Reflection.Metadata.Ecma335;LiteralEncoder;LiteralEncoder;(System.Reflection.Metadata.BlobBuilder);summary;df-generated | | System.Reflection.Metadata.Ecma335;LiteralEncoder;Scalar;();summary;df-generated | | System.Reflection.Metadata.Ecma335;LiteralEncoder;TaggedScalar;(System.Reflection.Metadata.Ecma335.CustomAttributeElementTypeEncoder,System.Reflection.Metadata.Ecma335.ScalarEncoder);summary;df-generated | @@ -32212,6 +32560,8 @@ neutral | System.Reflection.Metadata;AssemblyDefinitionHandle;Equals;(System.Reflection.Metadata.AssemblyDefinitionHandle);summary;df-generated | | System.Reflection.Metadata;AssemblyDefinitionHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;AssemblyDefinitionHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;AssemblyDefinitionHandle;op_Equality;(System.Reflection.Metadata.AssemblyDefinitionHandle,System.Reflection.Metadata.AssemblyDefinitionHandle);summary;df-generated | +| System.Reflection.Metadata;AssemblyDefinitionHandle;op_Inequality;(System.Reflection.Metadata.AssemblyDefinitionHandle,System.Reflection.Metadata.AssemblyDefinitionHandle);summary;df-generated | | System.Reflection.Metadata;AssemblyExtensions;TryGetRawMetadata;(System.Reflection.Assembly,System.Byte*,System.Int32);summary;df-generated | | System.Reflection.Metadata;AssemblyFile;get_ContainsMetadata;();summary;df-generated | | System.Reflection.Metadata;AssemblyFile;get_HashValue;();summary;df-generated | @@ -32220,6 +32570,8 @@ neutral | System.Reflection.Metadata;AssemblyFileHandle;Equals;(System.Reflection.Metadata.AssemblyFileHandle);summary;df-generated | | System.Reflection.Metadata;AssemblyFileHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;AssemblyFileHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;AssemblyFileHandle;op_Equality;(System.Reflection.Metadata.AssemblyFileHandle,System.Reflection.Metadata.AssemblyFileHandle);summary;df-generated | +| System.Reflection.Metadata;AssemblyFileHandle;op_Inequality;(System.Reflection.Metadata.AssemblyFileHandle,System.Reflection.Metadata.AssemblyFileHandle);summary;df-generated | | System.Reflection.Metadata;AssemblyFileHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;AssemblyFileHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;AssemblyFileHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32237,6 +32589,8 @@ neutral | System.Reflection.Metadata;AssemblyReferenceHandle;Equals;(System.Reflection.Metadata.AssemblyReferenceHandle);summary;df-generated | | System.Reflection.Metadata;AssemblyReferenceHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;AssemblyReferenceHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;AssemblyReferenceHandle;op_Equality;(System.Reflection.Metadata.AssemblyReferenceHandle,System.Reflection.Metadata.AssemblyReferenceHandle);summary;df-generated | +| System.Reflection.Metadata;AssemblyReferenceHandle;op_Inequality;(System.Reflection.Metadata.AssemblyReferenceHandle,System.Reflection.Metadata.AssemblyReferenceHandle);summary;df-generated | | System.Reflection.Metadata;AssemblyReferenceHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;AssemblyReferenceHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;AssemblyReferenceHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32311,10 +32665,14 @@ neutral | System.Reflection.Metadata;BlobContentId;get_Guid;();summary;df-generated | | System.Reflection.Metadata;BlobContentId;get_IsDefault;();summary;df-generated | | System.Reflection.Metadata;BlobContentId;get_Stamp;();summary;df-generated | +| System.Reflection.Metadata;BlobContentId;op_Equality;(System.Reflection.Metadata.BlobContentId,System.Reflection.Metadata.BlobContentId);summary;df-generated | +| System.Reflection.Metadata;BlobContentId;op_Inequality;(System.Reflection.Metadata.BlobContentId,System.Reflection.Metadata.BlobContentId);summary;df-generated | | System.Reflection.Metadata;BlobHandle;Equals;(System.Object);summary;df-generated | | System.Reflection.Metadata;BlobHandle;Equals;(System.Reflection.Metadata.BlobHandle);summary;df-generated | | System.Reflection.Metadata;BlobHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;BlobHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;BlobHandle;op_Equality;(System.Reflection.Metadata.BlobHandle,System.Reflection.Metadata.BlobHandle);summary;df-generated | +| System.Reflection.Metadata;BlobHandle;op_Inequality;(System.Reflection.Metadata.BlobHandle,System.Reflection.Metadata.BlobHandle);summary;df-generated | | System.Reflection.Metadata;BlobReader;Align;(System.Byte);summary;df-generated | | System.Reflection.Metadata;BlobReader;BlobReader;(System.Byte*,System.Int32);summary;df-generated | | System.Reflection.Metadata;BlobReader;IndexOf;(System.Byte);summary;df-generated | @@ -32405,6 +32763,8 @@ neutral | System.Reflection.Metadata;ConstantHandle;Equals;(System.Reflection.Metadata.ConstantHandle);summary;df-generated | | System.Reflection.Metadata;ConstantHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;ConstantHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;ConstantHandle;op_Equality;(System.Reflection.Metadata.ConstantHandle,System.Reflection.Metadata.ConstantHandle);summary;df-generated | +| System.Reflection.Metadata;ConstantHandle;op_Inequality;(System.Reflection.Metadata.ConstantHandle,System.Reflection.Metadata.ConstantHandle);summary;df-generated | | System.Reflection.Metadata;CustomAttribute;DecodeValue<>;(System.Reflection.Metadata.ICustomAttributeTypeProvider);summary;df-generated | | System.Reflection.Metadata;CustomAttribute;get_Constructor;();summary;df-generated | | System.Reflection.Metadata;CustomAttribute;get_Parent;();summary;df-generated | @@ -32413,6 +32773,8 @@ neutral | System.Reflection.Metadata;CustomAttributeHandle;Equals;(System.Reflection.Metadata.CustomAttributeHandle);summary;df-generated | | System.Reflection.Metadata;CustomAttributeHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;CustomAttributeHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;CustomAttributeHandle;op_Equality;(System.Reflection.Metadata.CustomAttributeHandle,System.Reflection.Metadata.CustomAttributeHandle);summary;df-generated | +| System.Reflection.Metadata;CustomAttributeHandle;op_Inequality;(System.Reflection.Metadata.CustomAttributeHandle,System.Reflection.Metadata.CustomAttributeHandle);summary;df-generated | | System.Reflection.Metadata;CustomAttributeHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;CustomAttributeHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;CustomAttributeHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32436,6 +32798,8 @@ neutral | System.Reflection.Metadata;CustomDebugInformationHandle;Equals;(System.Reflection.Metadata.CustomDebugInformationHandle);summary;df-generated | | System.Reflection.Metadata;CustomDebugInformationHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;CustomDebugInformationHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;CustomDebugInformationHandle;op_Equality;(System.Reflection.Metadata.CustomDebugInformationHandle,System.Reflection.Metadata.CustomDebugInformationHandle);summary;df-generated | +| System.Reflection.Metadata;CustomDebugInformationHandle;op_Inequality;(System.Reflection.Metadata.CustomDebugInformationHandle,System.Reflection.Metadata.CustomDebugInformationHandle);summary;df-generated | | System.Reflection.Metadata;CustomDebugInformationHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;CustomDebugInformationHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;CustomDebugInformationHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32451,6 +32815,8 @@ neutral | System.Reflection.Metadata;DeclarativeSecurityAttributeHandle;Equals;(System.Reflection.Metadata.DeclarativeSecurityAttributeHandle);summary;df-generated | | System.Reflection.Metadata;DeclarativeSecurityAttributeHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;DeclarativeSecurityAttributeHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;DeclarativeSecurityAttributeHandle;op_Equality;(System.Reflection.Metadata.DeclarativeSecurityAttributeHandle,System.Reflection.Metadata.DeclarativeSecurityAttributeHandle);summary;df-generated | +| System.Reflection.Metadata;DeclarativeSecurityAttributeHandle;op_Inequality;(System.Reflection.Metadata.DeclarativeSecurityAttributeHandle,System.Reflection.Metadata.DeclarativeSecurityAttributeHandle);summary;df-generated | | System.Reflection.Metadata;DeclarativeSecurityAttributeHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;DeclarativeSecurityAttributeHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;DeclarativeSecurityAttributeHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32464,6 +32830,8 @@ neutral | System.Reflection.Metadata;DocumentHandle;Equals;(System.Reflection.Metadata.DocumentHandle);summary;df-generated | | System.Reflection.Metadata;DocumentHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;DocumentHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;DocumentHandle;op_Equality;(System.Reflection.Metadata.DocumentHandle,System.Reflection.Metadata.DocumentHandle);summary;df-generated | +| System.Reflection.Metadata;DocumentHandle;op_Inequality;(System.Reflection.Metadata.DocumentHandle,System.Reflection.Metadata.DocumentHandle);summary;df-generated | | System.Reflection.Metadata;DocumentHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;DocumentHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;DocumentHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32473,11 +32841,15 @@ neutral | System.Reflection.Metadata;DocumentNameBlobHandle;Equals;(System.Reflection.Metadata.DocumentNameBlobHandle);summary;df-generated | | System.Reflection.Metadata;DocumentNameBlobHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;DocumentNameBlobHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;DocumentNameBlobHandle;op_Equality;(System.Reflection.Metadata.DocumentNameBlobHandle,System.Reflection.Metadata.DocumentNameBlobHandle);summary;df-generated | +| System.Reflection.Metadata;DocumentNameBlobHandle;op_Inequality;(System.Reflection.Metadata.DocumentNameBlobHandle,System.Reflection.Metadata.DocumentNameBlobHandle);summary;df-generated | | System.Reflection.Metadata;EntityHandle;Equals;(System.Object);summary;df-generated | | System.Reflection.Metadata;EntityHandle;Equals;(System.Reflection.Metadata.EntityHandle);summary;df-generated | | System.Reflection.Metadata;EntityHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;EntityHandle;get_IsNil;();summary;df-generated | | System.Reflection.Metadata;EntityHandle;get_Kind;();summary;df-generated | +| System.Reflection.Metadata;EntityHandle;op_Equality;(System.Reflection.Metadata.EntityHandle,System.Reflection.Metadata.EntityHandle);summary;df-generated | +| System.Reflection.Metadata;EntityHandle;op_Inequality;(System.Reflection.Metadata.EntityHandle,System.Reflection.Metadata.EntityHandle);summary;df-generated | | System.Reflection.Metadata;EventAccessors;get_Adder;();summary;df-generated | | System.Reflection.Metadata;EventAccessors;get_Raiser;();summary;df-generated | | System.Reflection.Metadata;EventAccessors;get_Remover;();summary;df-generated | @@ -32489,6 +32861,8 @@ neutral | System.Reflection.Metadata;EventDefinitionHandle;Equals;(System.Reflection.Metadata.EventDefinitionHandle);summary;df-generated | | System.Reflection.Metadata;EventDefinitionHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;EventDefinitionHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;EventDefinitionHandle;op_Equality;(System.Reflection.Metadata.EventDefinitionHandle,System.Reflection.Metadata.EventDefinitionHandle);summary;df-generated | +| System.Reflection.Metadata;EventDefinitionHandle;op_Inequality;(System.Reflection.Metadata.EventDefinitionHandle,System.Reflection.Metadata.EventDefinitionHandle);summary;df-generated | | System.Reflection.Metadata;EventDefinitionHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;EventDefinitionHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;EventDefinitionHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32511,6 +32885,8 @@ neutral | System.Reflection.Metadata;ExportedTypeHandle;Equals;(System.Reflection.Metadata.ExportedTypeHandle);summary;df-generated | | System.Reflection.Metadata;ExportedTypeHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;ExportedTypeHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;ExportedTypeHandle;op_Equality;(System.Reflection.Metadata.ExportedTypeHandle,System.Reflection.Metadata.ExportedTypeHandle);summary;df-generated | +| System.Reflection.Metadata;ExportedTypeHandle;op_Inequality;(System.Reflection.Metadata.ExportedTypeHandle,System.Reflection.Metadata.ExportedTypeHandle);summary;df-generated | | System.Reflection.Metadata;ExportedTypeHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;ExportedTypeHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;ExportedTypeHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32530,6 +32906,8 @@ neutral | System.Reflection.Metadata;FieldDefinitionHandle;Equals;(System.Reflection.Metadata.FieldDefinitionHandle);summary;df-generated | | System.Reflection.Metadata;FieldDefinitionHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;FieldDefinitionHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;FieldDefinitionHandle;op_Equality;(System.Reflection.Metadata.FieldDefinitionHandle,System.Reflection.Metadata.FieldDefinitionHandle);summary;df-generated | +| System.Reflection.Metadata;FieldDefinitionHandle;op_Inequality;(System.Reflection.Metadata.FieldDefinitionHandle,System.Reflection.Metadata.FieldDefinitionHandle);summary;df-generated | | System.Reflection.Metadata;FieldDefinitionHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;FieldDefinitionHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;FieldDefinitionHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32546,6 +32924,8 @@ neutral | System.Reflection.Metadata;GenericParameterConstraintHandle;Equals;(System.Reflection.Metadata.GenericParameterConstraintHandle);summary;df-generated | | System.Reflection.Metadata;GenericParameterConstraintHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;GenericParameterConstraintHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;GenericParameterConstraintHandle;op_Equality;(System.Reflection.Metadata.GenericParameterConstraintHandle,System.Reflection.Metadata.GenericParameterConstraintHandle);summary;df-generated | +| System.Reflection.Metadata;GenericParameterConstraintHandle;op_Inequality;(System.Reflection.Metadata.GenericParameterConstraintHandle,System.Reflection.Metadata.GenericParameterConstraintHandle);summary;df-generated | | System.Reflection.Metadata;GenericParameterConstraintHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;GenericParameterConstraintHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;GenericParameterConstraintHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32557,6 +32937,8 @@ neutral | System.Reflection.Metadata;GenericParameterHandle;Equals;(System.Reflection.Metadata.GenericParameterHandle);summary;df-generated | | System.Reflection.Metadata;GenericParameterHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;GenericParameterHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;GenericParameterHandle;op_Equality;(System.Reflection.Metadata.GenericParameterHandle,System.Reflection.Metadata.GenericParameterHandle);summary;df-generated | +| System.Reflection.Metadata;GenericParameterHandle;op_Inequality;(System.Reflection.Metadata.GenericParameterHandle,System.Reflection.Metadata.GenericParameterHandle);summary;df-generated | | System.Reflection.Metadata;GenericParameterHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;GenericParameterHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;GenericParameterHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32568,11 +32950,15 @@ neutral | System.Reflection.Metadata;GuidHandle;Equals;(System.Reflection.Metadata.GuidHandle);summary;df-generated | | System.Reflection.Metadata;GuidHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;GuidHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;GuidHandle;op_Equality;(System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle);summary;df-generated | +| System.Reflection.Metadata;GuidHandle;op_Inequality;(System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle);summary;df-generated | | System.Reflection.Metadata;Handle;Equals;(System.Object);summary;df-generated | | System.Reflection.Metadata;Handle;Equals;(System.Reflection.Metadata.Handle);summary;df-generated | | System.Reflection.Metadata;Handle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;Handle;get_IsNil;();summary;df-generated | | System.Reflection.Metadata;Handle;get_Kind;();summary;df-generated | +| System.Reflection.Metadata;Handle;op_Equality;(System.Reflection.Metadata.Handle,System.Reflection.Metadata.Handle);summary;df-generated | +| System.Reflection.Metadata;Handle;op_Inequality;(System.Reflection.Metadata.Handle,System.Reflection.Metadata.Handle);summary;df-generated | | System.Reflection.Metadata;HandleComparer;Compare;(System.Reflection.Metadata.EntityHandle,System.Reflection.Metadata.EntityHandle);summary;df-generated | | System.Reflection.Metadata;HandleComparer;Compare;(System.Reflection.Metadata.Handle,System.Reflection.Metadata.Handle);summary;df-generated | | System.Reflection.Metadata;HandleComparer;Equals;(System.Reflection.Metadata.EntityHandle,System.Reflection.Metadata.EntityHandle);summary;df-generated | @@ -32626,11 +33012,15 @@ neutral | System.Reflection.Metadata;ImportScopeHandle;Equals;(System.Reflection.Metadata.ImportScopeHandle);summary;df-generated | | System.Reflection.Metadata;ImportScopeHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;ImportScopeHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;ImportScopeHandle;op_Equality;(System.Reflection.Metadata.ImportScopeHandle,System.Reflection.Metadata.ImportScopeHandle);summary;df-generated | +| System.Reflection.Metadata;ImportScopeHandle;op_Inequality;(System.Reflection.Metadata.ImportScopeHandle,System.Reflection.Metadata.ImportScopeHandle);summary;df-generated | | System.Reflection.Metadata;InterfaceImplementation;get_Interface;();summary;df-generated | | System.Reflection.Metadata;InterfaceImplementationHandle;Equals;(System.Object);summary;df-generated | | System.Reflection.Metadata;InterfaceImplementationHandle;Equals;(System.Reflection.Metadata.InterfaceImplementationHandle);summary;df-generated | | System.Reflection.Metadata;InterfaceImplementationHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;InterfaceImplementationHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;InterfaceImplementationHandle;op_Equality;(System.Reflection.Metadata.InterfaceImplementationHandle,System.Reflection.Metadata.InterfaceImplementationHandle);summary;df-generated | +| System.Reflection.Metadata;InterfaceImplementationHandle;op_Inequality;(System.Reflection.Metadata.InterfaceImplementationHandle,System.Reflection.Metadata.InterfaceImplementationHandle);summary;df-generated | | System.Reflection.Metadata;InterfaceImplementationHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;InterfaceImplementationHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;InterfaceImplementationHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32642,6 +33032,8 @@ neutral | System.Reflection.Metadata;LocalConstantHandle;Equals;(System.Reflection.Metadata.LocalConstantHandle);summary;df-generated | | System.Reflection.Metadata;LocalConstantHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;LocalConstantHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;LocalConstantHandle;op_Equality;(System.Reflection.Metadata.LocalConstantHandle,System.Reflection.Metadata.LocalConstantHandle);summary;df-generated | +| System.Reflection.Metadata;LocalConstantHandle;op_Inequality;(System.Reflection.Metadata.LocalConstantHandle,System.Reflection.Metadata.LocalConstantHandle);summary;df-generated | | System.Reflection.Metadata;LocalConstantHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;LocalConstantHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;LocalConstantHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32656,6 +33048,8 @@ neutral | System.Reflection.Metadata;LocalScopeHandle;Equals;(System.Reflection.Metadata.LocalScopeHandle);summary;df-generated | | System.Reflection.Metadata;LocalScopeHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;LocalScopeHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;LocalScopeHandle;op_Equality;(System.Reflection.Metadata.LocalScopeHandle,System.Reflection.Metadata.LocalScopeHandle);summary;df-generated | +| System.Reflection.Metadata;LocalScopeHandle;op_Inequality;(System.Reflection.Metadata.LocalScopeHandle,System.Reflection.Metadata.LocalScopeHandle);summary;df-generated | | System.Reflection.Metadata;LocalScopeHandleCollection+ChildrenEnumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;LocalScopeHandleCollection+ChildrenEnumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;LocalScopeHandleCollection+ChildrenEnumerator;Reset;();summary;df-generated | @@ -32672,6 +33066,8 @@ neutral | System.Reflection.Metadata;LocalVariableHandle;Equals;(System.Reflection.Metadata.LocalVariableHandle);summary;df-generated | | System.Reflection.Metadata;LocalVariableHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;LocalVariableHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;LocalVariableHandle;op_Equality;(System.Reflection.Metadata.LocalVariableHandle,System.Reflection.Metadata.LocalVariableHandle);summary;df-generated | +| System.Reflection.Metadata;LocalVariableHandle;op_Inequality;(System.Reflection.Metadata.LocalVariableHandle,System.Reflection.Metadata.LocalVariableHandle);summary;df-generated | | System.Reflection.Metadata;LocalVariableHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;LocalVariableHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;LocalVariableHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32685,6 +33081,8 @@ neutral | System.Reflection.Metadata;ManifestResourceHandle;Equals;(System.Reflection.Metadata.ManifestResourceHandle);summary;df-generated | | System.Reflection.Metadata;ManifestResourceHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;ManifestResourceHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;ManifestResourceHandle;op_Equality;(System.Reflection.Metadata.ManifestResourceHandle,System.Reflection.Metadata.ManifestResourceHandle);summary;df-generated | +| System.Reflection.Metadata;ManifestResourceHandle;op_Inequality;(System.Reflection.Metadata.ManifestResourceHandle,System.Reflection.Metadata.ManifestResourceHandle);summary;df-generated | | System.Reflection.Metadata;ManifestResourceHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;ManifestResourceHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;ManifestResourceHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32701,6 +33099,8 @@ neutral | System.Reflection.Metadata;MemberReferenceHandle;Equals;(System.Reflection.Metadata.MemberReferenceHandle);summary;df-generated | | System.Reflection.Metadata;MemberReferenceHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;MemberReferenceHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;MemberReferenceHandle;op_Equality;(System.Reflection.Metadata.MemberReferenceHandle,System.Reflection.Metadata.MemberReferenceHandle);summary;df-generated | +| System.Reflection.Metadata;MemberReferenceHandle;op_Inequality;(System.Reflection.Metadata.MemberReferenceHandle,System.Reflection.Metadata.MemberReferenceHandle);summary;df-generated | | System.Reflection.Metadata;MemberReferenceHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;MemberReferenceHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;MemberReferenceHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32762,6 +33162,8 @@ neutral | System.Reflection.Metadata;MethodDebugInformationHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;MethodDebugInformationHandle;ToDefinitionHandle;();summary;df-generated | | System.Reflection.Metadata;MethodDebugInformationHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;MethodDebugInformationHandle;op_Equality;(System.Reflection.Metadata.MethodDebugInformationHandle,System.Reflection.Metadata.MethodDebugInformationHandle);summary;df-generated | +| System.Reflection.Metadata;MethodDebugInformationHandle;op_Inequality;(System.Reflection.Metadata.MethodDebugInformationHandle,System.Reflection.Metadata.MethodDebugInformationHandle);summary;df-generated | | System.Reflection.Metadata;MethodDebugInformationHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;MethodDebugInformationHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;MethodDebugInformationHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32781,6 +33183,8 @@ neutral | System.Reflection.Metadata;MethodDefinitionHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;MethodDefinitionHandle;ToDebugInformationHandle;();summary;df-generated | | System.Reflection.Metadata;MethodDefinitionHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;MethodDefinitionHandle;op_Equality;(System.Reflection.Metadata.MethodDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle);summary;df-generated | +| System.Reflection.Metadata;MethodDefinitionHandle;op_Inequality;(System.Reflection.Metadata.MethodDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle);summary;df-generated | | System.Reflection.Metadata;MethodDefinitionHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;MethodDefinitionHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;MethodDefinitionHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32793,6 +33197,8 @@ neutral | System.Reflection.Metadata;MethodImplementationHandle;Equals;(System.Reflection.Metadata.MethodImplementationHandle);summary;df-generated | | System.Reflection.Metadata;MethodImplementationHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;MethodImplementationHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;MethodImplementationHandle;op_Equality;(System.Reflection.Metadata.MethodImplementationHandle,System.Reflection.Metadata.MethodImplementationHandle);summary;df-generated | +| System.Reflection.Metadata;MethodImplementationHandle;op_Inequality;(System.Reflection.Metadata.MethodImplementationHandle,System.Reflection.Metadata.MethodImplementationHandle);summary;df-generated | | System.Reflection.Metadata;MethodImplementationHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;MethodImplementationHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;MethodImplementationHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32813,6 +33219,8 @@ neutral | System.Reflection.Metadata;MethodSpecificationHandle;Equals;(System.Reflection.Metadata.MethodSpecificationHandle);summary;df-generated | | System.Reflection.Metadata;MethodSpecificationHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;MethodSpecificationHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;MethodSpecificationHandle;op_Equality;(System.Reflection.Metadata.MethodSpecificationHandle,System.Reflection.Metadata.MethodSpecificationHandle);summary;df-generated | +| System.Reflection.Metadata;MethodSpecificationHandle;op_Inequality;(System.Reflection.Metadata.MethodSpecificationHandle,System.Reflection.Metadata.MethodSpecificationHandle);summary;df-generated | | System.Reflection.Metadata;ModuleDefinition;get_BaseGenerationId;();summary;df-generated | | System.Reflection.Metadata;ModuleDefinition;get_Generation;();summary;df-generated | | System.Reflection.Metadata;ModuleDefinition;get_GenerationId;();summary;df-generated | @@ -32822,15 +33230,21 @@ neutral | System.Reflection.Metadata;ModuleDefinitionHandle;Equals;(System.Reflection.Metadata.ModuleDefinitionHandle);summary;df-generated | | System.Reflection.Metadata;ModuleDefinitionHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;ModuleDefinitionHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;ModuleDefinitionHandle;op_Equality;(System.Reflection.Metadata.ModuleDefinitionHandle,System.Reflection.Metadata.ModuleDefinitionHandle);summary;df-generated | +| System.Reflection.Metadata;ModuleDefinitionHandle;op_Inequality;(System.Reflection.Metadata.ModuleDefinitionHandle,System.Reflection.Metadata.ModuleDefinitionHandle);summary;df-generated | | System.Reflection.Metadata;ModuleReference;get_Name;();summary;df-generated | | System.Reflection.Metadata;ModuleReferenceHandle;Equals;(System.Object);summary;df-generated | | System.Reflection.Metadata;ModuleReferenceHandle;Equals;(System.Reflection.Metadata.ModuleReferenceHandle);summary;df-generated | | System.Reflection.Metadata;ModuleReferenceHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;ModuleReferenceHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;ModuleReferenceHandle;op_Equality;(System.Reflection.Metadata.ModuleReferenceHandle,System.Reflection.Metadata.ModuleReferenceHandle);summary;df-generated | +| System.Reflection.Metadata;ModuleReferenceHandle;op_Inequality;(System.Reflection.Metadata.ModuleReferenceHandle,System.Reflection.Metadata.ModuleReferenceHandle);summary;df-generated | | System.Reflection.Metadata;NamespaceDefinitionHandle;Equals;(System.Object);summary;df-generated | | System.Reflection.Metadata;NamespaceDefinitionHandle;Equals;(System.Reflection.Metadata.NamespaceDefinitionHandle);summary;df-generated | | System.Reflection.Metadata;NamespaceDefinitionHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;NamespaceDefinitionHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;NamespaceDefinitionHandle;op_Equality;(System.Reflection.Metadata.NamespaceDefinitionHandle,System.Reflection.Metadata.NamespaceDefinitionHandle);summary;df-generated | +| System.Reflection.Metadata;NamespaceDefinitionHandle;op_Inequality;(System.Reflection.Metadata.NamespaceDefinitionHandle,System.Reflection.Metadata.NamespaceDefinitionHandle);summary;df-generated | | System.Reflection.Metadata;PEReaderExtensions;GetMethodBody;(System.Reflection.PortableExecutable.PEReader,System.Int32);summary;df-generated | | System.Reflection.Metadata;Parameter;GetDefaultValue;();summary;df-generated | | System.Reflection.Metadata;Parameter;GetMarshallingDescriptor;();summary;df-generated | @@ -32841,6 +33255,8 @@ neutral | System.Reflection.Metadata;ParameterHandle;Equals;(System.Reflection.Metadata.ParameterHandle);summary;df-generated | | System.Reflection.Metadata;ParameterHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;ParameterHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;ParameterHandle;op_Equality;(System.Reflection.Metadata.ParameterHandle,System.Reflection.Metadata.ParameterHandle);summary;df-generated | +| System.Reflection.Metadata;ParameterHandle;op_Inequality;(System.Reflection.Metadata.ParameterHandle,System.Reflection.Metadata.ParameterHandle);summary;df-generated | | System.Reflection.Metadata;ParameterHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;ParameterHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;ParameterHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32858,6 +33274,8 @@ neutral | System.Reflection.Metadata;PropertyDefinitionHandle;Equals;(System.Reflection.Metadata.PropertyDefinitionHandle);summary;df-generated | | System.Reflection.Metadata;PropertyDefinitionHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;PropertyDefinitionHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;PropertyDefinitionHandle;op_Equality;(System.Reflection.Metadata.PropertyDefinitionHandle,System.Reflection.Metadata.PropertyDefinitionHandle);summary;df-generated | +| System.Reflection.Metadata;PropertyDefinitionHandle;op_Inequality;(System.Reflection.Metadata.PropertyDefinitionHandle,System.Reflection.Metadata.PropertyDefinitionHandle);summary;df-generated | | System.Reflection.Metadata;PropertyDefinitionHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;PropertyDefinitionHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;PropertyDefinitionHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32892,6 +33310,8 @@ neutral | System.Reflection.Metadata;SignatureHeader;get_IsInstance;();summary;df-generated | | System.Reflection.Metadata;SignatureHeader;get_Kind;();summary;df-generated | | System.Reflection.Metadata;SignatureHeader;get_RawValue;();summary;df-generated | +| System.Reflection.Metadata;SignatureHeader;op_Equality;(System.Reflection.Metadata.SignatureHeader,System.Reflection.Metadata.SignatureHeader);summary;df-generated | +| System.Reflection.Metadata;SignatureHeader;op_Inequality;(System.Reflection.Metadata.SignatureHeader,System.Reflection.Metadata.SignatureHeader);summary;df-generated | | System.Reflection.Metadata;StandaloneSignature;DecodeLocalSignature<,>;(System.Reflection.Metadata.ISignatureTypeProvider,TGenericContext);summary;df-generated | | System.Reflection.Metadata;StandaloneSignature;DecodeMethodSignature<,>;(System.Reflection.Metadata.ISignatureTypeProvider,TGenericContext);summary;df-generated | | System.Reflection.Metadata;StandaloneSignature;GetKind;();summary;df-generated | @@ -32900,10 +33320,14 @@ neutral | System.Reflection.Metadata;StandaloneSignatureHandle;Equals;(System.Reflection.Metadata.StandaloneSignatureHandle);summary;df-generated | | System.Reflection.Metadata;StandaloneSignatureHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;StandaloneSignatureHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;StandaloneSignatureHandle;op_Equality;(System.Reflection.Metadata.StandaloneSignatureHandle,System.Reflection.Metadata.StandaloneSignatureHandle);summary;df-generated | +| System.Reflection.Metadata;StandaloneSignatureHandle;op_Inequality;(System.Reflection.Metadata.StandaloneSignatureHandle,System.Reflection.Metadata.StandaloneSignatureHandle);summary;df-generated | | System.Reflection.Metadata;StringHandle;Equals;(System.Object);summary;df-generated | | System.Reflection.Metadata;StringHandle;Equals;(System.Reflection.Metadata.StringHandle);summary;df-generated | | System.Reflection.Metadata;StringHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;StringHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;StringHandle;op_Equality;(System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.StringHandle);summary;df-generated | +| System.Reflection.Metadata;StringHandle;op_Inequality;(System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.StringHandle);summary;df-generated | | System.Reflection.Metadata;TypeDefinition;GetDeclaringType;();summary;df-generated | | System.Reflection.Metadata;TypeDefinition;GetGenericParameters;();summary;df-generated | | System.Reflection.Metadata;TypeDefinition;GetLayout;();summary;df-generated | @@ -32919,6 +33343,8 @@ neutral | System.Reflection.Metadata;TypeDefinitionHandle;Equals;(System.Reflection.Metadata.TypeDefinitionHandle);summary;df-generated | | System.Reflection.Metadata;TypeDefinitionHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;TypeDefinitionHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;TypeDefinitionHandle;op_Equality;(System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.TypeDefinitionHandle);summary;df-generated | +| System.Reflection.Metadata;TypeDefinitionHandle;op_Inequality;(System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.TypeDefinitionHandle);summary;df-generated | | System.Reflection.Metadata;TypeDefinitionHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;TypeDefinitionHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;TypeDefinitionHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32936,6 +33362,8 @@ neutral | System.Reflection.Metadata;TypeReferenceHandle;Equals;(System.Reflection.Metadata.TypeReferenceHandle);summary;df-generated | | System.Reflection.Metadata;TypeReferenceHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;TypeReferenceHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;TypeReferenceHandle;op_Equality;(System.Reflection.Metadata.TypeReferenceHandle,System.Reflection.Metadata.TypeReferenceHandle);summary;df-generated | +| System.Reflection.Metadata;TypeReferenceHandle;op_Inequality;(System.Reflection.Metadata.TypeReferenceHandle,System.Reflection.Metadata.TypeReferenceHandle);summary;df-generated | | System.Reflection.Metadata;TypeReferenceHandleCollection+Enumerator;Dispose;();summary;df-generated | | System.Reflection.Metadata;TypeReferenceHandleCollection+Enumerator;MoveNext;();summary;df-generated | | System.Reflection.Metadata;TypeReferenceHandleCollection+Enumerator;Reset;();summary;df-generated | @@ -32948,10 +33376,14 @@ neutral | System.Reflection.Metadata;TypeSpecificationHandle;Equals;(System.Reflection.Metadata.TypeSpecificationHandle);summary;df-generated | | System.Reflection.Metadata;TypeSpecificationHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;TypeSpecificationHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;TypeSpecificationHandle;op_Equality;(System.Reflection.Metadata.TypeSpecificationHandle,System.Reflection.Metadata.TypeSpecificationHandle);summary;df-generated | +| System.Reflection.Metadata;TypeSpecificationHandle;op_Inequality;(System.Reflection.Metadata.TypeSpecificationHandle,System.Reflection.Metadata.TypeSpecificationHandle);summary;df-generated | | System.Reflection.Metadata;UserStringHandle;Equals;(System.Object);summary;df-generated | | System.Reflection.Metadata;UserStringHandle;Equals;(System.Reflection.Metadata.UserStringHandle);summary;df-generated | | System.Reflection.Metadata;UserStringHandle;GetHashCode;();summary;df-generated | | System.Reflection.Metadata;UserStringHandle;get_IsNil;();summary;df-generated | +| System.Reflection.Metadata;UserStringHandle;op_Equality;(System.Reflection.Metadata.UserStringHandle,System.Reflection.Metadata.UserStringHandle);summary;df-generated | +| System.Reflection.Metadata;UserStringHandle;op_Inequality;(System.Reflection.Metadata.UserStringHandle,System.Reflection.Metadata.UserStringHandle);summary;df-generated | | System.Reflection.PortableExecutable;CodeViewDebugDirectoryData;get_Age;();summary;df-generated | | System.Reflection.PortableExecutable;CodeViewDebugDirectoryData;get_Guid;();summary;df-generated | | System.Reflection.PortableExecutable;CodeViewDebugDirectoryData;get_Path;();summary;df-generated | @@ -33208,6 +33640,8 @@ neutral | System.Reflection;Assembly;get_Modules;();summary;df-generated | | System.Reflection;Assembly;get_ReflectionOnly;();summary;df-generated | | System.Reflection;Assembly;get_SecurityRuleSet;();summary;df-generated | +| System.Reflection;Assembly;op_Equality;(System.Reflection.Assembly,System.Reflection.Assembly);summary;df-generated | +| System.Reflection;Assembly;op_Inequality;(System.Reflection.Assembly,System.Reflection.Assembly);summary;df-generated | | System.Reflection;AssemblyAlgorithmIdAttribute;AssemblyAlgorithmIdAttribute;(System.Configuration.Assemblies.AssemblyHashAlgorithm);summary;df-generated | | System.Reflection;AssemblyAlgorithmIdAttribute;AssemblyAlgorithmIdAttribute;(System.UInt32);summary;df-generated | | System.Reflection;AssemblyAlgorithmIdAttribute;get_AlgorithmId;();summary;df-generated | @@ -33292,6 +33726,8 @@ neutral | System.Reflection;ConstructorInfo;Invoke;(System.Object[]);summary;df-generated | | System.Reflection;ConstructorInfo;Invoke;(System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo);summary;df-generated | | System.Reflection;ConstructorInfo;get_MemberType;();summary;df-generated | +| System.Reflection;ConstructorInfo;op_Equality;(System.Reflection.ConstructorInfo,System.Reflection.ConstructorInfo);summary;df-generated | +| System.Reflection;ConstructorInfo;op_Inequality;(System.Reflection.ConstructorInfo,System.Reflection.ConstructorInfo);summary;df-generated | | System.Reflection;CustomAttributeData;CustomAttributeData;();summary;df-generated | | System.Reflection;CustomAttributeData;Equals;(System.Object);summary;df-generated | | System.Reflection;CustomAttributeData;GetCustomAttributes;(System.Reflection.Assembly);summary;df-generated | @@ -33346,8 +33782,12 @@ neutral | System.Reflection;CustomAttributeNamedArgument;Equals;(System.Object);summary;df-generated | | System.Reflection;CustomAttributeNamedArgument;GetHashCode;();summary;df-generated | | System.Reflection;CustomAttributeNamedArgument;get_IsField;();summary;df-generated | +| System.Reflection;CustomAttributeNamedArgument;op_Equality;(System.Reflection.CustomAttributeNamedArgument,System.Reflection.CustomAttributeNamedArgument);summary;df-generated | +| System.Reflection;CustomAttributeNamedArgument;op_Inequality;(System.Reflection.CustomAttributeNamedArgument,System.Reflection.CustomAttributeNamedArgument);summary;df-generated | | System.Reflection;CustomAttributeTypedArgument;Equals;(System.Object);summary;df-generated | | System.Reflection;CustomAttributeTypedArgument;GetHashCode;();summary;df-generated | +| System.Reflection;CustomAttributeTypedArgument;op_Equality;(System.Reflection.CustomAttributeTypedArgument,System.Reflection.CustomAttributeTypedArgument);summary;df-generated | +| System.Reflection;CustomAttributeTypedArgument;op_Inequality;(System.Reflection.CustomAttributeTypedArgument,System.Reflection.CustomAttributeTypedArgument);summary;df-generated | | System.Reflection;DefaultMemberAttribute;DefaultMemberAttribute;(System.String);summary;df-generated | | System.Reflection;DefaultMemberAttribute;get_MemberName;();summary;df-generated | | System.Reflection;DispatchProxy;Create<,>;();summary;df-generated | @@ -33368,6 +33808,8 @@ neutral | System.Reflection;EventInfo;get_IsMulticast;();summary;df-generated | | System.Reflection;EventInfo;get_IsSpecialName;();summary;df-generated | | System.Reflection;EventInfo;get_MemberType;();summary;df-generated | +| System.Reflection;EventInfo;op_Equality;(System.Reflection.EventInfo,System.Reflection.EventInfo);summary;df-generated | +| System.Reflection;EventInfo;op_Inequality;(System.Reflection.EventInfo,System.Reflection.EventInfo);summary;df-generated | | System.Reflection;ExceptionHandlingClause;ExceptionHandlingClause;();summary;df-generated | | System.Reflection;ExceptionHandlingClause;get_CatchType;();summary;df-generated | | System.Reflection;ExceptionHandlingClause;get_FilterOffset;();summary;df-generated | @@ -33408,6 +33850,8 @@ neutral | System.Reflection;FieldInfo;get_IsSpecialName;();summary;df-generated | | System.Reflection;FieldInfo;get_IsStatic;();summary;df-generated | | System.Reflection;FieldInfo;get_MemberType;();summary;df-generated | +| System.Reflection;FieldInfo;op_Equality;(System.Reflection.FieldInfo,System.Reflection.FieldInfo);summary;df-generated | +| System.Reflection;FieldInfo;op_Inequality;(System.Reflection.FieldInfo,System.Reflection.FieldInfo);summary;df-generated | | System.Reflection;ICustomAttributeProvider;GetCustomAttributes;(System.Boolean);summary;df-generated | | System.Reflection;ICustomAttributeProvider;GetCustomAttributes;(System.Type,System.Boolean);summary;df-generated | | System.Reflection;ICustomAttributeProvider;IsDefined;(System.Type,System.Boolean);summary;df-generated | @@ -33453,6 +33897,8 @@ neutral | System.Reflection;MemberInfo;get_Module;();summary;df-generated | | System.Reflection;MemberInfo;get_Name;();summary;df-generated | | System.Reflection;MemberInfo;get_ReflectedType;();summary;df-generated | +| System.Reflection;MemberInfo;op_Equality;(System.Reflection.MemberInfo,System.Reflection.MemberInfo);summary;df-generated | +| System.Reflection;MemberInfo;op_Inequality;(System.Reflection.MemberInfo,System.Reflection.MemberInfo);summary;df-generated | | System.Reflection;MemberInfoExtensions;GetMetadataToken;(System.Reflection.MemberInfo);summary;df-generated | | System.Reflection;MemberInfoExtensions;HasMetadataToken;(System.Reflection.MemberInfo);summary;df-generated | | System.Reflection;MethodBase;Equals;(System.Object);summary;df-generated | @@ -33491,6 +33937,8 @@ neutral | System.Reflection;MethodBase;get_IsVirtual;();summary;df-generated | | System.Reflection;MethodBase;get_MethodHandle;();summary;df-generated | | System.Reflection;MethodBase;get_MethodImplementationFlags;();summary;df-generated | +| System.Reflection;MethodBase;op_Equality;(System.Reflection.MethodBase,System.Reflection.MethodBase);summary;df-generated | +| System.Reflection;MethodBase;op_Inequality;(System.Reflection.MethodBase,System.Reflection.MethodBase);summary;df-generated | | System.Reflection;MethodBody;GetILAsByteArray;();summary;df-generated | | System.Reflection;MethodBody;MethodBody;();summary;df-generated | | System.Reflection;MethodBody;get_ExceptionHandlingClauses;();summary;df-generated | @@ -33512,6 +33960,8 @@ neutral | System.Reflection;MethodInfo;get_ReturnParameter;();summary;df-generated | | System.Reflection;MethodInfo;get_ReturnType;();summary;df-generated | | System.Reflection;MethodInfo;get_ReturnTypeCustomAttributes;();summary;df-generated | +| System.Reflection;MethodInfo;op_Equality;(System.Reflection.MethodInfo,System.Reflection.MethodInfo);summary;df-generated | +| System.Reflection;MethodInfo;op_Inequality;(System.Reflection.MethodInfo,System.Reflection.MethodInfo);summary;df-generated | | System.Reflection;Missing;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | | System.Reflection;Module;Equals;(System.Object);summary;df-generated | | System.Reflection;Module;GetCustomAttributes;(System.Boolean);summary;df-generated | @@ -33549,6 +33999,8 @@ neutral | System.Reflection;Module;get_ModuleVersionId;();summary;df-generated | | System.Reflection;Module;get_Name;();summary;df-generated | | System.Reflection;Module;get_ScopeName;();summary;df-generated | +| System.Reflection;Module;op_Equality;(System.Reflection.Module,System.Reflection.Module);summary;df-generated | +| System.Reflection;Module;op_Inequality;(System.Reflection.Module,System.Reflection.Module);summary;df-generated | | System.Reflection;ModuleExtensions;GetModuleVersionId;(System.Reflection.Module);summary;df-generated | | System.Reflection;ModuleExtensions;HasModuleVersionId;(System.Reflection.Module);summary;df-generated | | System.Reflection;NullabilityInfo;get_ElementType;();summary;df-generated | @@ -33621,6 +34073,8 @@ neutral | System.Reflection;PropertyInfo;get_IsSpecialName;();summary;df-generated | | System.Reflection;PropertyInfo;get_MemberType;();summary;df-generated | | System.Reflection;PropertyInfo;get_PropertyType;();summary;df-generated | +| System.Reflection;PropertyInfo;op_Equality;(System.Reflection.PropertyInfo,System.Reflection.PropertyInfo);summary;df-generated | +| System.Reflection;PropertyInfo;op_Inequality;(System.Reflection.PropertyInfo,System.Reflection.PropertyInfo);summary;df-generated | | System.Reflection;ReflectionContext;GetTypeForObject;(System.Object);summary;df-generated | | System.Reflection;ReflectionContext;MapAssembly;(System.Reflection.Assembly);summary;df-generated | | System.Reflection;ReflectionContext;MapType;(System.Reflection.TypeInfo);summary;df-generated | @@ -34212,6 +34666,8 @@ neutral | System.Runtime.InteropServices;ArrayWithOffset;Equals;(System.Runtime.InteropServices.ArrayWithOffset);summary;df-generated | | System.Runtime.InteropServices;ArrayWithOffset;GetHashCode;();summary;df-generated | | System.Runtime.InteropServices;ArrayWithOffset;GetOffset;();summary;df-generated | +| System.Runtime.InteropServices;ArrayWithOffset;op_Equality;(System.Runtime.InteropServices.ArrayWithOffset,System.Runtime.InteropServices.ArrayWithOffset);summary;df-generated | +| System.Runtime.InteropServices;ArrayWithOffset;op_Inequality;(System.Runtime.InteropServices.ArrayWithOffset,System.Runtime.InteropServices.ArrayWithOffset);summary;df-generated | | System.Runtime.InteropServices;AutomationProxyAttribute;AutomationProxyAttribute;(System.Boolean);summary;df-generated | | System.Runtime.InteropServices;AutomationProxyAttribute;get_Value;();summary;df-generated | | System.Runtime.InteropServices;BStrWrapper;BStrWrapper;(System.Object);summary;df-generated | @@ -34330,6 +34786,8 @@ neutral | System.Runtime.InteropServices;GCHandle;GetHashCode;();summary;df-generated | | System.Runtime.InteropServices;GCHandle;get_IsAllocated;();summary;df-generated | | System.Runtime.InteropServices;GCHandle;get_Target;();summary;df-generated | +| System.Runtime.InteropServices;GCHandle;op_Equality;(System.Runtime.InteropServices.GCHandle,System.Runtime.InteropServices.GCHandle);summary;df-generated | +| System.Runtime.InteropServices;GCHandle;op_Inequality;(System.Runtime.InteropServices.GCHandle,System.Runtime.InteropServices.GCHandle);summary;df-generated | | System.Runtime.InteropServices;GCHandle;set_Target;(System.Object);summary;df-generated | | System.Runtime.InteropServices;GuidAttribute;GuidAttribute;(System.String);summary;df-generated | | System.Runtime.InteropServices;GuidAttribute;get_Value;();summary;df-generated | @@ -34587,6 +35045,8 @@ neutral | System.Runtime.InteropServices;OSPlatform;get_Linux;();summary;df-generated | | System.Runtime.InteropServices;OSPlatform;get_OSX;();summary;df-generated | | System.Runtime.InteropServices;OSPlatform;get_Windows;();summary;df-generated | +| System.Runtime.InteropServices;OSPlatform;op_Equality;(System.Runtime.InteropServices.OSPlatform,System.Runtime.InteropServices.OSPlatform);summary;df-generated | +| System.Runtime.InteropServices;OSPlatform;op_Inequality;(System.Runtime.InteropServices.OSPlatform,System.Runtime.InteropServices.OSPlatform);summary;df-generated | | System.Runtime.InteropServices;OptionalAttribute;OptionalAttribute;();summary;df-generated | | System.Runtime.InteropServices;OutAttribute;OutAttribute;();summary;df-generated | | System.Runtime.InteropServices;PosixSignalContext;PosixSignalContext;(System.Runtime.InteropServices.PosixSignal);summary;df-generated | @@ -38451,6 +38911,19 @@ neutral | System.Runtime.Intrinsics;Vector64<>;get_Count;();summary;df-generated | | System.Runtime.Intrinsics;Vector64<>;get_Item;(System.Int32);summary;df-generated | | System.Runtime.Intrinsics;Vector64<>;get_Zero;();summary;df-generated | +| System.Runtime.Intrinsics;Vector64<>;op_Addition;(System.Runtime.Intrinsics.Vector64<>,System.Runtime.Intrinsics.Vector64<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector64<>;op_BitwiseAnd;(System.Runtime.Intrinsics.Vector64<>,System.Runtime.Intrinsics.Vector64<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector64<>;op_BitwiseOr;(System.Runtime.Intrinsics.Vector64<>,System.Runtime.Intrinsics.Vector64<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector64<>;op_Division;(System.Runtime.Intrinsics.Vector64<>,System.Runtime.Intrinsics.Vector64<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector64<>;op_Equality;(System.Runtime.Intrinsics.Vector64<>,System.Runtime.Intrinsics.Vector64<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector64<>;op_ExclusiveOr;(System.Runtime.Intrinsics.Vector64<>,System.Runtime.Intrinsics.Vector64<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector64<>;op_Inequality;(System.Runtime.Intrinsics.Vector64<>,System.Runtime.Intrinsics.Vector64<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector64<>;op_Multiply;(System.Runtime.Intrinsics.Vector64<>,System.Runtime.Intrinsics.Vector64<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector64<>;op_Multiply;(System.Runtime.Intrinsics.Vector64<>,T);summary;df-generated | +| System.Runtime.Intrinsics;Vector64<>;op_Multiply;(T,System.Runtime.Intrinsics.Vector64<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector64<>;op_OnesComplement;(System.Runtime.Intrinsics.Vector64<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector64<>;op_Subtraction;(System.Runtime.Intrinsics.Vector64<>,System.Runtime.Intrinsics.Vector64<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector64<>;op_UnaryNegation;(System.Runtime.Intrinsics.Vector64<>);summary;df-generated | | System.Runtime.Intrinsics;Vector128;Add<>;(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector128);summary;df-generated | | System.Runtime.Intrinsics;Vector128;AndNot<>;(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector128);summary;df-generated | | System.Runtime.Intrinsics;Vector128;As<,>;(System.Runtime.Intrinsics.Vector128);summary;df-generated | @@ -38609,6 +39082,19 @@ neutral | System.Runtime.Intrinsics;Vector128<>;get_Count;();summary;df-generated | | System.Runtime.Intrinsics;Vector128<>;get_Item;(System.Int32);summary;df-generated | | System.Runtime.Intrinsics;Vector128<>;get_Zero;();summary;df-generated | +| System.Runtime.Intrinsics;Vector128<>;op_Addition;(System.Runtime.Intrinsics.Vector128<>,System.Runtime.Intrinsics.Vector128<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector128<>;op_BitwiseAnd;(System.Runtime.Intrinsics.Vector128<>,System.Runtime.Intrinsics.Vector128<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector128<>;op_BitwiseOr;(System.Runtime.Intrinsics.Vector128<>,System.Runtime.Intrinsics.Vector128<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector128<>;op_Division;(System.Runtime.Intrinsics.Vector128<>,System.Runtime.Intrinsics.Vector128<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector128<>;op_Equality;(System.Runtime.Intrinsics.Vector128<>,System.Runtime.Intrinsics.Vector128<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector128<>;op_ExclusiveOr;(System.Runtime.Intrinsics.Vector128<>,System.Runtime.Intrinsics.Vector128<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector128<>;op_Inequality;(System.Runtime.Intrinsics.Vector128<>,System.Runtime.Intrinsics.Vector128<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector128<>;op_Multiply;(System.Runtime.Intrinsics.Vector128<>,System.Runtime.Intrinsics.Vector128<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector128<>;op_Multiply;(System.Runtime.Intrinsics.Vector128<>,T);summary;df-generated | +| System.Runtime.Intrinsics;Vector128<>;op_Multiply;(T,System.Runtime.Intrinsics.Vector128<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector128<>;op_OnesComplement;(System.Runtime.Intrinsics.Vector128<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector128<>;op_Subtraction;(System.Runtime.Intrinsics.Vector128<>,System.Runtime.Intrinsics.Vector128<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector128<>;op_UnaryNegation;(System.Runtime.Intrinsics.Vector128<>);summary;df-generated | | System.Runtime.Intrinsics;Vector256;Add<>;(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector256);summary;df-generated | | System.Runtime.Intrinsics;Vector256;AndNot<>;(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector256);summary;df-generated | | System.Runtime.Intrinsics;Vector256;As<,>;(System.Runtime.Intrinsics.Vector256);summary;df-generated | @@ -38759,6 +39245,19 @@ neutral | System.Runtime.Intrinsics;Vector256<>;get_Count;();summary;df-generated | | System.Runtime.Intrinsics;Vector256<>;get_Item;(System.Int32);summary;df-generated | | System.Runtime.Intrinsics;Vector256<>;get_Zero;();summary;df-generated | +| System.Runtime.Intrinsics;Vector256<>;op_Addition;(System.Runtime.Intrinsics.Vector256<>,System.Runtime.Intrinsics.Vector256<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector256<>;op_BitwiseAnd;(System.Runtime.Intrinsics.Vector256<>,System.Runtime.Intrinsics.Vector256<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector256<>;op_BitwiseOr;(System.Runtime.Intrinsics.Vector256<>,System.Runtime.Intrinsics.Vector256<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector256<>;op_Division;(System.Runtime.Intrinsics.Vector256<>,System.Runtime.Intrinsics.Vector256<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector256<>;op_Equality;(System.Runtime.Intrinsics.Vector256<>,System.Runtime.Intrinsics.Vector256<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector256<>;op_ExclusiveOr;(System.Runtime.Intrinsics.Vector256<>,System.Runtime.Intrinsics.Vector256<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector256<>;op_Inequality;(System.Runtime.Intrinsics.Vector256<>,System.Runtime.Intrinsics.Vector256<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector256<>;op_Multiply;(System.Runtime.Intrinsics.Vector256<>,System.Runtime.Intrinsics.Vector256<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector256<>;op_Multiply;(System.Runtime.Intrinsics.Vector256<>,T);summary;df-generated | +| System.Runtime.Intrinsics;Vector256<>;op_Multiply;(T,System.Runtime.Intrinsics.Vector256<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector256<>;op_OnesComplement;(System.Runtime.Intrinsics.Vector256<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector256<>;op_Subtraction;(System.Runtime.Intrinsics.Vector256<>,System.Runtime.Intrinsics.Vector256<>);summary;df-generated | +| System.Runtime.Intrinsics;Vector256<>;op_UnaryNegation;(System.Runtime.Intrinsics.Vector256<>);summary;df-generated | | System.Runtime.Loader;AssemblyDependencyResolver;AssemblyDependencyResolver;(System.String);summary;df-generated | | System.Runtime.Loader;AssemblyLoadContext+ContextualReflectionScope;Dispose;();summary;df-generated | | System.Runtime.Loader;AssemblyLoadContext;AssemblyLoadContext;();summary;df-generated | @@ -39086,6 +39585,8 @@ neutral | System.Runtime.Versioning;FrameworkName;Equals;(System.Runtime.Versioning.FrameworkName);summary;df-generated | | System.Runtime.Versioning;FrameworkName;FrameworkName;(System.String,System.Version);summary;df-generated | | System.Runtime.Versioning;FrameworkName;GetHashCode;();summary;df-generated | +| System.Runtime.Versioning;FrameworkName;op_Equality;(System.Runtime.Versioning.FrameworkName,System.Runtime.Versioning.FrameworkName);summary;df-generated | +| System.Runtime.Versioning;FrameworkName;op_Inequality;(System.Runtime.Versioning.FrameworkName,System.Runtime.Versioning.FrameworkName);summary;df-generated | | System.Runtime.Versioning;OSPlatformAttribute;get_PlatformName;();summary;df-generated | | System.Runtime.Versioning;RequiresPreviewFeaturesAttribute;RequiresPreviewFeaturesAttribute;();summary;df-generated | | System.Runtime.Versioning;RequiresPreviewFeaturesAttribute;RequiresPreviewFeaturesAttribute;(System.String);summary;df-generated | @@ -39295,6 +39796,8 @@ neutral | System.Security.AccessControl;GenericAce;get_InheritanceFlags;();summary;df-generated | | System.Security.AccessControl;GenericAce;get_IsInherited;();summary;df-generated | | System.Security.AccessControl;GenericAce;get_PropagationFlags;();summary;df-generated | +| System.Security.AccessControl;GenericAce;op_Equality;(System.Security.AccessControl.GenericAce,System.Security.AccessControl.GenericAce);summary;df-generated | +| System.Security.AccessControl;GenericAce;op_Inequality;(System.Security.AccessControl.GenericAce,System.Security.AccessControl.GenericAce);summary;df-generated | | System.Security.AccessControl;GenericAce;set_AceFlags;(System.Security.AccessControl.AceFlags);summary;df-generated | | System.Security.AccessControl;GenericAcl;CopyTo;(System.Security.AccessControl.GenericAce[],System.Int32);summary;df-generated | | System.Security.AccessControl;GenericAcl;GenericAcl;();summary;df-generated | @@ -40156,6 +40659,8 @@ neutral | System.Security.Cryptography;CngAlgorithm;get_Sha256;();summary;df-generated | | System.Security.Cryptography;CngAlgorithm;get_Sha384;();summary;df-generated | | System.Security.Cryptography;CngAlgorithm;get_Sha512;();summary;df-generated | +| System.Security.Cryptography;CngAlgorithm;op_Equality;(System.Security.Cryptography.CngAlgorithm,System.Security.Cryptography.CngAlgorithm);summary;df-generated | +| System.Security.Cryptography;CngAlgorithm;op_Inequality;(System.Security.Cryptography.CngAlgorithm,System.Security.Cryptography.CngAlgorithm);summary;df-generated | | System.Security.Cryptography;CngAlgorithmGroup;CngAlgorithmGroup;(System.String);summary;df-generated | | System.Security.Cryptography;CngAlgorithmGroup;Equals;(System.Object);summary;df-generated | | System.Security.Cryptography;CngAlgorithmGroup;Equals;(System.Security.Cryptography.CngAlgorithmGroup);summary;df-generated | @@ -40167,6 +40672,8 @@ neutral | System.Security.Cryptography;CngAlgorithmGroup;get_ECDiffieHellman;();summary;df-generated | | System.Security.Cryptography;CngAlgorithmGroup;get_ECDsa;();summary;df-generated | | System.Security.Cryptography;CngAlgorithmGroup;get_Rsa;();summary;df-generated | +| System.Security.Cryptography;CngAlgorithmGroup;op_Equality;(System.Security.Cryptography.CngAlgorithmGroup,System.Security.Cryptography.CngAlgorithmGroup);summary;df-generated | +| System.Security.Cryptography;CngAlgorithmGroup;op_Inequality;(System.Security.Cryptography.CngAlgorithmGroup,System.Security.Cryptography.CngAlgorithmGroup);summary;df-generated | | System.Security.Cryptography;CngKey;Create;(System.Security.Cryptography.CngAlgorithm);summary;df-generated | | System.Security.Cryptography;CngKey;Create;(System.Security.Cryptography.CngAlgorithm,System.String);summary;df-generated | | System.Security.Cryptography;CngKey;Create;(System.Security.Cryptography.CngAlgorithm,System.String,System.Security.Cryptography.CngKeyCreationParameters);summary;df-generated | @@ -40214,6 +40721,8 @@ neutral | System.Security.Cryptography;CngKeyBlobFormat;get_GenericPublicBlob;();summary;df-generated | | System.Security.Cryptography;CngKeyBlobFormat;get_OpaqueTransportBlob;();summary;df-generated | | System.Security.Cryptography;CngKeyBlobFormat;get_Pkcs8PrivateBlob;();summary;df-generated | +| System.Security.Cryptography;CngKeyBlobFormat;op_Equality;(System.Security.Cryptography.CngKeyBlobFormat,System.Security.Cryptography.CngKeyBlobFormat);summary;df-generated | +| System.Security.Cryptography;CngKeyBlobFormat;op_Inequality;(System.Security.Cryptography.CngKeyBlobFormat,System.Security.Cryptography.CngKeyBlobFormat);summary;df-generated | | System.Security.Cryptography;CngKeyCreationParameters;CngKeyCreationParameters;();summary;df-generated | | System.Security.Cryptography;CngKeyCreationParameters;get_ExportPolicy;();summary;df-generated | | System.Security.Cryptography;CngKeyCreationParameters;get_KeyCreationOptions;();summary;df-generated | @@ -40235,6 +40744,8 @@ neutral | System.Security.Cryptography;CngProperty;GetValue;();summary;df-generated | | System.Security.Cryptography;CngProperty;get_Name;();summary;df-generated | | System.Security.Cryptography;CngProperty;get_Options;();summary;df-generated | +| System.Security.Cryptography;CngProperty;op_Equality;(System.Security.Cryptography.CngProperty,System.Security.Cryptography.CngProperty);summary;df-generated | +| System.Security.Cryptography;CngProperty;op_Inequality;(System.Security.Cryptography.CngProperty,System.Security.Cryptography.CngProperty);summary;df-generated | | System.Security.Cryptography;CngPropertyCollection;CngPropertyCollection;();summary;df-generated | | System.Security.Cryptography;CngProvider;CngProvider;(System.String);summary;df-generated | | System.Security.Cryptography;CngProvider;Equals;(System.Object);summary;df-generated | @@ -40245,6 +40756,8 @@ neutral | System.Security.Cryptography;CngProvider;get_MicrosoftSmartCardKeyStorageProvider;();summary;df-generated | | System.Security.Cryptography;CngProvider;get_MicrosoftSoftwareKeyStorageProvider;();summary;df-generated | | System.Security.Cryptography;CngProvider;get_Provider;();summary;df-generated | +| System.Security.Cryptography;CngProvider;op_Equality;(System.Security.Cryptography.CngProvider,System.Security.Cryptography.CngProvider);summary;df-generated | +| System.Security.Cryptography;CngProvider;op_Inequality;(System.Security.Cryptography.CngProvider,System.Security.Cryptography.CngProvider);summary;df-generated | | System.Security.Cryptography;CngUIPolicy;CngUIPolicy;(System.Security.Cryptography.CngUIProtectionLevels);summary;df-generated | | System.Security.Cryptography;CngUIPolicy;CngUIPolicy;(System.Security.Cryptography.CngUIProtectionLevels,System.String);summary;df-generated | | System.Security.Cryptography;CngUIPolicy;CngUIPolicy;(System.Security.Cryptography.CngUIProtectionLevels,System.String,System.String);summary;df-generated | @@ -40793,6 +41306,8 @@ neutral | System.Security.Cryptography;HashAlgorithmName;get_SHA256;();summary;df-generated | | System.Security.Cryptography;HashAlgorithmName;get_SHA384;();summary;df-generated | | System.Security.Cryptography;HashAlgorithmName;get_SHA512;();summary;df-generated | +| System.Security.Cryptography;HashAlgorithmName;op_Equality;(System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.HashAlgorithmName);summary;df-generated | +| System.Security.Cryptography;HashAlgorithmName;op_Inequality;(System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.HashAlgorithmName);summary;df-generated | | System.Security.Cryptography;ICryptoTransform;TransformBlock;(System.Byte[],System.Int32,System.Int32,System.Byte[],System.Int32);summary;df-generated | | System.Security.Cryptography;ICryptoTransform;TransformFinalBlock;(System.Byte[],System.Int32,System.Int32);summary;df-generated | | System.Security.Cryptography;ICryptoTransform;get_CanReuseTransform;();summary;df-generated | @@ -41008,6 +41523,8 @@ neutral | System.Security.Cryptography;RSAEncryptionPadding;get_OaepSHA384;();summary;df-generated | | System.Security.Cryptography;RSAEncryptionPadding;get_OaepSHA512;();summary;df-generated | | System.Security.Cryptography;RSAEncryptionPadding;get_Pkcs1;();summary;df-generated | +| System.Security.Cryptography;RSAEncryptionPadding;op_Equality;(System.Security.Cryptography.RSAEncryptionPadding,System.Security.Cryptography.RSAEncryptionPadding);summary;df-generated | +| System.Security.Cryptography;RSAEncryptionPadding;op_Inequality;(System.Security.Cryptography.RSAEncryptionPadding,System.Security.Cryptography.RSAEncryptionPadding);summary;df-generated | | System.Security.Cryptography;RSAOAEPKeyExchangeDeformatter;DecryptKeyExchange;(System.Byte[]);summary;df-generated | | System.Security.Cryptography;RSAOAEPKeyExchangeDeformatter;RSAOAEPKeyExchangeDeformatter;();summary;df-generated | | System.Security.Cryptography;RSAOAEPKeyExchangeDeformatter;get_Parameters;();summary;df-generated | @@ -41045,6 +41562,8 @@ neutral | System.Security.Cryptography;RSASignaturePadding;get_Mode;();summary;df-generated | | System.Security.Cryptography;RSASignaturePadding;get_Pkcs1;();summary;df-generated | | System.Security.Cryptography;RSASignaturePadding;get_Pss;();summary;df-generated | +| System.Security.Cryptography;RSASignaturePadding;op_Equality;(System.Security.Cryptography.RSASignaturePadding,System.Security.Cryptography.RSASignaturePadding);summary;df-generated | +| System.Security.Cryptography;RSASignaturePadding;op_Inequality;(System.Security.Cryptography.RSASignaturePadding,System.Security.Cryptography.RSASignaturePadding);summary;df-generated | | System.Security.Cryptography;RandomNumberGenerator;Create;();summary;df-generated | | System.Security.Cryptography;RandomNumberGenerator;Create;(System.String);summary;df-generated | | System.Security.Cryptography;RandomNumberGenerator;Dispose;();summary;df-generated | @@ -41404,6 +41923,8 @@ neutral | System.Security.Principal;IdentityReference;ToString;();summary;df-generated | | System.Security.Principal;IdentityReference;Translate;(System.Type);summary;df-generated | | System.Security.Principal;IdentityReference;get_Value;();summary;df-generated | +| System.Security.Principal;IdentityReference;op_Equality;(System.Security.Principal.IdentityReference,System.Security.Principal.IdentityReference);summary;df-generated | +| System.Security.Principal;IdentityReference;op_Inequality;(System.Security.Principal.IdentityReference,System.Security.Principal.IdentityReference);summary;df-generated | | System.Security.Principal;IdentityReferenceCollection;Contains;(System.Security.Principal.IdentityReference);summary;df-generated | | System.Security.Principal;IdentityReferenceCollection;IdentityReferenceCollection;();summary;df-generated | | System.Security.Principal;IdentityReferenceCollection;IdentityReferenceCollection;(System.Int32);summary;df-generated | @@ -41422,6 +41943,8 @@ neutral | System.Security.Principal;NTAccount;ToString;();summary;df-generated | | System.Security.Principal;NTAccount;Translate;(System.Type);summary;df-generated | | System.Security.Principal;NTAccount;get_Value;();summary;df-generated | +| System.Security.Principal;NTAccount;op_Equality;(System.Security.Principal.NTAccount,System.Security.Principal.NTAccount);summary;df-generated | +| System.Security.Principal;NTAccount;op_Inequality;(System.Security.Principal.NTAccount,System.Security.Principal.NTAccount);summary;df-generated | | System.Security.Principal;SecurityIdentifier;CompareTo;(System.Security.Principal.SecurityIdentifier);summary;df-generated | | System.Security.Principal;SecurityIdentifier;Equals;(System.Object);summary;df-generated | | System.Security.Principal;SecurityIdentifier;Equals;(System.Security.Principal.SecurityIdentifier);summary;df-generated | @@ -41440,6 +41963,8 @@ neutral | System.Security.Principal;SecurityIdentifier;get_AccountDomainSid;();summary;df-generated | | System.Security.Principal;SecurityIdentifier;get_BinaryLength;();summary;df-generated | | System.Security.Principal;SecurityIdentifier;get_Value;();summary;df-generated | +| System.Security.Principal;SecurityIdentifier;op_Equality;(System.Security.Principal.SecurityIdentifier,System.Security.Principal.SecurityIdentifier);summary;df-generated | +| System.Security.Principal;SecurityIdentifier;op_Inequality;(System.Security.Principal.SecurityIdentifier,System.Security.Principal.SecurityIdentifier);summary;df-generated | | System.Security.Principal;WindowsIdentity;Clone;();summary;df-generated | | System.Security.Principal;WindowsIdentity;Dispose;();summary;df-generated | | System.Security.Principal;WindowsIdentity;Dispose;(System.Boolean);summary;df-generated | @@ -42709,6 +43234,12 @@ neutral | System.Text;Rune;get_Utf8SequenceLength;();summary;df-generated | | System.Text;Rune;get_Utf16SequenceLength;();summary;df-generated | | System.Text;Rune;get_Value;();summary;df-generated | +| System.Text;Rune;op_Equality;(System.Text.Rune,System.Text.Rune);summary;df-generated | +| System.Text;Rune;op_GreaterThan;(System.Text.Rune,System.Text.Rune);summary;df-generated | +| System.Text;Rune;op_GreaterThanOrEqual;(System.Text.Rune,System.Text.Rune);summary;df-generated | +| System.Text;Rune;op_Inequality;(System.Text.Rune,System.Text.Rune);summary;df-generated | +| System.Text;Rune;op_LessThan;(System.Text.Rune,System.Text.Rune);summary;df-generated | +| System.Text;Rune;op_LessThanOrEqual;(System.Text.Rune,System.Text.Rune);summary;df-generated | | System.Text;SpanLineEnumerator;MoveNext;();summary;df-generated | | System.Text;SpanRuneEnumerator;MoveNext;();summary;df-generated | | System.Text;StringBuilder+AppendInterpolatedStringHandler;AppendFormatted;(System.Object,System.Int32,System.String);summary;df-generated | @@ -42843,6 +43374,8 @@ neutral | System.Threading.RateLimiting;MetadataName<>;Equals;(System.Object);summary;df-generated | | System.Threading.RateLimiting;MetadataName<>;Equals;(System.Threading.RateLimiting.MetadataName<>);summary;df-generated | | System.Threading.RateLimiting;MetadataName<>;GetHashCode;();summary;df-generated | +| System.Threading.RateLimiting;MetadataName<>;op_Equality;(System.Threading.RateLimiting.MetadataName<>,System.Threading.RateLimiting.MetadataName<>);summary;df-generated | +| System.Threading.RateLimiting;MetadataName<>;op_Inequality;(System.Threading.RateLimiting.MetadataName<>,System.Threading.RateLimiting.MetadataName<>);summary;df-generated | | System.Threading.RateLimiting;RateLimitLease;Dispose;();summary;df-generated | | System.Threading.RateLimiting;RateLimitLease;Dispose;(System.Boolean);summary;df-generated | | System.Threading.RateLimiting;RateLimitLease;TryGetMetadata;(System.String,System.Object);summary;df-generated | @@ -42941,6 +43474,8 @@ neutral | System.Threading.Tasks.Dataflow;DataflowMessageHeader;GetHashCode;();summary;df-generated | | System.Threading.Tasks.Dataflow;DataflowMessageHeader;get_Id;();summary;df-generated | | System.Threading.Tasks.Dataflow;DataflowMessageHeader;get_IsValid;();summary;df-generated | +| System.Threading.Tasks.Dataflow;DataflowMessageHeader;op_Equality;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.DataflowMessageHeader);summary;df-generated | +| System.Threading.Tasks.Dataflow;DataflowMessageHeader;op_Inequality;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.DataflowMessageHeader);summary;df-generated | | System.Threading.Tasks.Dataflow;ExecutionDataflowBlockOptions;ExecutionDataflowBlockOptions;();summary;df-generated | | System.Threading.Tasks.Dataflow;ExecutionDataflowBlockOptions;get_MaxDegreeOfParallelism;();summary;df-generated | | System.Threading.Tasks.Dataflow;ExecutionDataflowBlockOptions;get_SingleProducerConstrained;();summary;df-generated | @@ -43137,6 +43672,8 @@ neutral | System.Threading.Tasks;ValueTask;get_IsCompleted;();summary;df-generated | | System.Threading.Tasks;ValueTask;get_IsCompletedSuccessfully;();summary;df-generated | | System.Threading.Tasks;ValueTask;get_IsFaulted;();summary;df-generated | +| System.Threading.Tasks;ValueTask;op_Equality;(System.Threading.Tasks.ValueTask,System.Threading.Tasks.ValueTask);summary;df-generated | +| System.Threading.Tasks;ValueTask;op_Inequality;(System.Threading.Tasks.ValueTask,System.Threading.Tasks.ValueTask);summary;df-generated | | System.Threading.Tasks;ValueTask<>;Equals;(System.Object);summary;df-generated | | System.Threading.Tasks;ValueTask<>;Equals;(System.Threading.Tasks.ValueTask<>);summary;df-generated | | System.Threading.Tasks;ValueTask<>;GetHashCode;();summary;df-generated | @@ -43144,6 +43681,8 @@ neutral | System.Threading.Tasks;ValueTask<>;get_IsCompleted;();summary;df-generated | | System.Threading.Tasks;ValueTask<>;get_IsCompletedSuccessfully;();summary;df-generated | | System.Threading.Tasks;ValueTask<>;get_IsFaulted;();summary;df-generated | +| System.Threading.Tasks;ValueTask<>;op_Equality;(System.Threading.Tasks.ValueTask<>,System.Threading.Tasks.ValueTask<>);summary;df-generated | +| System.Threading.Tasks;ValueTask<>;op_Inequality;(System.Threading.Tasks.ValueTask<>,System.Threading.Tasks.ValueTask<>);summary;df-generated | | System.Threading;AbandonedMutexException;AbandonedMutexException;();summary;df-generated | | System.Threading;AbandonedMutexException;AbandonedMutexException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | | System.Threading;AbandonedMutexException;AbandonedMutexException;(System.String);summary;df-generated | @@ -43154,6 +43693,8 @@ neutral | System.Threading;AsyncFlowControl;Equals;(System.Threading.AsyncFlowControl);summary;df-generated | | System.Threading;AsyncFlowControl;GetHashCode;();summary;df-generated | | System.Threading;AsyncFlowControl;Undo;();summary;df-generated | +| System.Threading;AsyncFlowControl;op_Equality;(System.Threading.AsyncFlowControl,System.Threading.AsyncFlowControl);summary;df-generated | +| System.Threading;AsyncFlowControl;op_Inequality;(System.Threading.AsyncFlowControl,System.Threading.AsyncFlowControl);summary;df-generated | | System.Threading;AsyncLocal<>;AsyncLocal;();summary;df-generated | | System.Threading;AsyncLocal<>;get_Value;();summary;df-generated | | System.Threading;AsyncLocal<>;set_Value;(T);summary;df-generated | @@ -43190,6 +43731,8 @@ neutral | System.Threading;CancellationToken;get_CanBeCanceled;();summary;df-generated | | System.Threading;CancellationToken;get_IsCancellationRequested;();summary;df-generated | | System.Threading;CancellationToken;get_None;();summary;df-generated | +| System.Threading;CancellationToken;op_Equality;(System.Threading.CancellationToken,System.Threading.CancellationToken);summary;df-generated | +| System.Threading;CancellationToken;op_Inequality;(System.Threading.CancellationToken,System.Threading.CancellationToken);summary;df-generated | | System.Threading;CancellationTokenRegistration;Dispose;();summary;df-generated | | System.Threading;CancellationTokenRegistration;DisposeAsync;();summary;df-generated | | System.Threading;CancellationTokenRegistration;Equals;(System.Object);summary;df-generated | @@ -43197,6 +43740,8 @@ neutral | System.Threading;CancellationTokenRegistration;GetHashCode;();summary;df-generated | | System.Threading;CancellationTokenRegistration;Unregister;();summary;df-generated | | System.Threading;CancellationTokenRegistration;get_Token;();summary;df-generated | +| System.Threading;CancellationTokenRegistration;op_Equality;(System.Threading.CancellationTokenRegistration,System.Threading.CancellationTokenRegistration);summary;df-generated | +| System.Threading;CancellationTokenRegistration;op_Inequality;(System.Threading.CancellationTokenRegistration,System.Threading.CancellationTokenRegistration);summary;df-generated | | System.Threading;CancellationTokenSource;Cancel;();summary;df-generated | | System.Threading;CancellationTokenSource;Cancel;(System.Boolean);summary;df-generated | | System.Threading;CancellationTokenSource;CancelAfter;(System.Int32);summary;df-generated | @@ -43303,6 +43848,8 @@ neutral | System.Threading;LockCookie;Equals;(System.Object);summary;df-generated | | System.Threading;LockCookie;Equals;(System.Threading.LockCookie);summary;df-generated | | System.Threading;LockCookie;GetHashCode;();summary;df-generated | +| System.Threading;LockCookie;op_Equality;(System.Threading.LockCookie,System.Threading.LockCookie);summary;df-generated | +| System.Threading;LockCookie;op_Inequality;(System.Threading.LockCookie,System.Threading.LockCookie);summary;df-generated | | System.Threading;LockRecursionException;LockRecursionException;();summary;df-generated | | System.Threading;LockRecursionException;LockRecursionException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | | System.Threading;LockRecursionException;LockRecursionException;(System.String);summary;df-generated | @@ -43703,6 +44250,8 @@ neutral | System.Transactions;Transaction;Rollback;();summary;df-generated | | System.Transactions;Transaction;get_Current;();summary;df-generated | | System.Transactions;Transaction;get_IsolationLevel;();summary;df-generated | +| System.Transactions;Transaction;op_Equality;(System.Transactions.Transaction,System.Transactions.Transaction);summary;df-generated | +| System.Transactions;Transaction;op_Inequality;(System.Transactions.Transaction,System.Transactions.Transaction);summary;df-generated | | System.Transactions;Transaction;set_Current;(System.Transactions.Transaction);summary;df-generated | | System.Transactions;TransactionAbortedException;TransactionAbortedException;();summary;df-generated | | System.Transactions;TransactionAbortedException;TransactionAbortedException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | @@ -43738,6 +44287,8 @@ neutral | System.Transactions;TransactionOptions;Equals;(System.Object);summary;df-generated | | System.Transactions;TransactionOptions;GetHashCode;();summary;df-generated | | System.Transactions;TransactionOptions;get_IsolationLevel;();summary;df-generated | +| System.Transactions;TransactionOptions;op_Equality;(System.Transactions.TransactionOptions,System.Transactions.TransactionOptions);summary;df-generated | +| System.Transactions;TransactionOptions;op_Inequality;(System.Transactions.TransactionOptions,System.Transactions.TransactionOptions);summary;df-generated | | System.Transactions;TransactionOptions;set_IsolationLevel;(System.Transactions.IsolationLevel);summary;df-generated | | System.Transactions;TransactionPromotionException;TransactionPromotionException;();summary;df-generated | | System.Transactions;TransactionPromotionException;TransactionPromotionException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | @@ -43829,12 +44380,16 @@ neutral | System.Xml.Linq;XName;Equals;(System.Xml.Linq.XName);summary;df-generated | | System.Xml.Linq;XName;GetHashCode;();summary;df-generated | | System.Xml.Linq;XName;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Xml.Linq;XName;op_Equality;(System.Xml.Linq.XName,System.Xml.Linq.XName);summary;df-generated | +| System.Xml.Linq;XName;op_Inequality;(System.Xml.Linq.XName,System.Xml.Linq.XName);summary;df-generated | | System.Xml.Linq;XNamespace;Equals;(System.Object);summary;df-generated | | System.Xml.Linq;XNamespace;Get;(System.String);summary;df-generated | | System.Xml.Linq;XNamespace;GetHashCode;();summary;df-generated | | System.Xml.Linq;XNamespace;get_None;();summary;df-generated | | System.Xml.Linq;XNamespace;get_Xml;();summary;df-generated | | System.Xml.Linq;XNamespace;get_Xmlns;();summary;df-generated | +| System.Xml.Linq;XNamespace;op_Equality;(System.Xml.Linq.XNamespace,System.Xml.Linq.XNamespace);summary;df-generated | +| System.Xml.Linq;XNamespace;op_Inequality;(System.Xml.Linq.XNamespace,System.Xml.Linq.XNamespace);summary;df-generated | | System.Xml.Linq;XNode;AddAfterSelf;(System.Object[]);summary;df-generated | | System.Xml.Linq;XNode;AddBeforeSelf;(System.Object[]);summary;df-generated | | System.Xml.Linq;XNode;CompareDocumentOrder;(System.Xml.Linq.XNode,System.Xml.Linq.XNode);summary;df-generated | @@ -44619,6 +45174,8 @@ neutral | System.Xml;UniqueId;UniqueId;(System.Guid);summary;df-generated | | System.Xml;UniqueId;get_CharArrayLength;();summary;df-generated | | System.Xml;UniqueId;get_IsGuid;();summary;df-generated | +| System.Xml;UniqueId;op_Equality;(System.Xml.UniqueId,System.Xml.UniqueId);summary;df-generated | +| System.Xml;UniqueId;op_Inequality;(System.Xml.UniqueId,System.Xml.UniqueId);summary;df-generated | | System.Xml;XmlAttribute;XmlAttribute;(System.String,System.String,System.String,System.Xml.XmlDocument);summary;df-generated | | System.Xml;XmlAttribute;get_Specified;();summary;df-generated | | System.Xml;XmlAttribute;set_InnerText;(System.String);summary;df-generated | @@ -44963,6 +45520,8 @@ neutral | System.Xml;XmlQualifiedName;get_IsEmpty;();summary;df-generated | | System.Xml;XmlQualifiedName;get_Name;();summary;df-generated | | System.Xml;XmlQualifiedName;get_Namespace;();summary;df-generated | +| System.Xml;XmlQualifiedName;op_Equality;(System.Xml.XmlQualifiedName,System.Xml.XmlQualifiedName);summary;df-generated | +| System.Xml;XmlQualifiedName;op_Inequality;(System.Xml.XmlQualifiedName,System.Xml.XmlQualifiedName);summary;df-generated | | System.Xml;XmlReader;Close;();summary;df-generated | | System.Xml;XmlReader;Dispose;();summary;df-generated | | System.Xml;XmlReader;Dispose;(System.Boolean);summary;df-generated | @@ -45604,6 +46163,8 @@ neutral | System;ArraySegment<>;get_Empty;();summary;df-generated | | System;ArraySegment<>;get_IsReadOnly;();summary;df-generated | | System;ArraySegment<>;get_Offset;();summary;df-generated | +| System;ArraySegment<>;op_Equality;(System.ArraySegment<>,System.ArraySegment<>);summary;df-generated | +| System;ArraySegment<>;op_Inequality;(System.ArraySegment<>,System.ArraySegment<>);summary;df-generated | | System;ArraySegment<>;set_Item;(System.Int32,T);summary;df-generated | | System;ArrayTypeMismatchException;ArrayTypeMismatchException;();summary;df-generated | | System;ArrayTypeMismatchException;ArrayTypeMismatchException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | @@ -46024,6 +46585,8 @@ neutral | System;ConsoleKeyInfo;get_Key;();summary;df-generated | | System;ConsoleKeyInfo;get_KeyChar;();summary;df-generated | | System;ConsoleKeyInfo;get_Modifiers;();summary;df-generated | +| System;ConsoleKeyInfo;op_Equality;(System.ConsoleKeyInfo,System.ConsoleKeyInfo);summary;df-generated | +| System;ConsoleKeyInfo;op_Inequality;(System.ConsoleKeyInfo,System.ConsoleKeyInfo);summary;df-generated | | System;ContextBoundObject;ContextBoundObject;();summary;df-generated | | System;ContextMarshalException;ContextMarshalException;();summary;df-generated | | System;ContextMarshalException;ContextMarshalException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | @@ -46104,6 +46667,12 @@ neutral | System;DateOnly;get_MinValue;();summary;df-generated | | System;DateOnly;get_Month;();summary;df-generated | | System;DateOnly;get_Year;();summary;df-generated | +| System;DateOnly;op_Equality;(System.DateOnly,System.DateOnly);summary;df-generated | +| System;DateOnly;op_GreaterThan;(System.DateOnly,System.DateOnly);summary;df-generated | +| System;DateOnly;op_GreaterThanOrEqual;(System.DateOnly,System.DateOnly);summary;df-generated | +| System;DateOnly;op_Inequality;(System.DateOnly,System.DateOnly);summary;df-generated | +| System;DateOnly;op_LessThan;(System.DateOnly,System.DateOnly);summary;df-generated | +| System;DateOnly;op_LessThanOrEqual;(System.DateOnly,System.DateOnly);summary;df-generated | | System;DateTime;Add;(System.TimeSpan);summary;df-generated | | System;DateTime;AddDays;(System.Double);summary;df-generated | | System;DateTime;AddHours;(System.Double);summary;df-generated | @@ -46206,6 +46775,15 @@ neutral | System;DateTime;get_Today;();summary;df-generated | | System;DateTime;get_UtcNow;();summary;df-generated | | System;DateTime;get_Year;();summary;df-generated | +| System;DateTime;op_Addition;(System.DateTime,System.TimeSpan);summary;df-generated | +| System;DateTime;op_Equality;(System.DateTime,System.DateTime);summary;df-generated | +| System;DateTime;op_GreaterThan;(System.DateTime,System.DateTime);summary;df-generated | +| System;DateTime;op_GreaterThanOrEqual;(System.DateTime,System.DateTime);summary;df-generated | +| System;DateTime;op_Inequality;(System.DateTime,System.DateTime);summary;df-generated | +| System;DateTime;op_LessThan;(System.DateTime,System.DateTime);summary;df-generated | +| System;DateTime;op_LessThanOrEqual;(System.DateTime,System.DateTime);summary;df-generated | +| System;DateTime;op_Subtraction;(System.DateTime,System.DateTime);summary;df-generated | +| System;DateTime;op_Subtraction;(System.DateTime,System.TimeSpan);summary;df-generated | | System;DateTimeOffset;Add;(System.TimeSpan);summary;df-generated | | System;DateTimeOffset;AddDays;(System.Double);summary;df-generated | | System;DateTimeOffset;AddHours;(System.Double);summary;df-generated | @@ -46283,6 +46861,15 @@ neutral | System;DateTimeOffset;get_UtcNow;();summary;df-generated | | System;DateTimeOffset;get_UtcTicks;();summary;df-generated | | System;DateTimeOffset;get_Year;();summary;df-generated | +| System;DateTimeOffset;op_Addition;(System.DateTimeOffset,System.TimeSpan);summary;df-generated | +| System;DateTimeOffset;op_Equality;(System.DateTimeOffset,System.DateTimeOffset);summary;df-generated | +| System;DateTimeOffset;op_GreaterThan;(System.DateTimeOffset,System.DateTimeOffset);summary;df-generated | +| System;DateTimeOffset;op_GreaterThanOrEqual;(System.DateTimeOffset,System.DateTimeOffset);summary;df-generated | +| System;DateTimeOffset;op_Inequality;(System.DateTimeOffset,System.DateTimeOffset);summary;df-generated | +| System;DateTimeOffset;op_LessThan;(System.DateTimeOffset,System.DateTimeOffset);summary;df-generated | +| System;DateTimeOffset;op_LessThanOrEqual;(System.DateTimeOffset,System.DateTimeOffset);summary;df-generated | +| System;DateTimeOffset;op_Subtraction;(System.DateTimeOffset,System.DateTimeOffset);summary;df-generated | +| System;DateTimeOffset;op_Subtraction;(System.DateTimeOffset,System.TimeSpan);summary;df-generated | | System;Decimal;Abs;(System.Decimal);summary;df-generated | | System;Decimal;Add;(System.Decimal,System.Decimal);summary;df-generated | | System;Decimal;Ceiling;(System.Decimal);summary;df-generated | @@ -46389,6 +46976,8 @@ neutral | System;Delegate;Equals;(System.Object);summary;df-generated | | System;Delegate;GetHashCode;();summary;df-generated | | System;Delegate;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System;Delegate;op_Equality;(System.Delegate,System.Delegate);summary;df-generated | +| System;Delegate;op_Inequality;(System.Delegate,System.Delegate);summary;df-generated | | System;DivideByZeroException;DivideByZeroException;();summary;df-generated | | System;DivideByZeroException;DivideByZeroException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | | System;DivideByZeroException;DivideByZeroException;(System.String);summary;df-generated | @@ -46712,6 +47301,8 @@ neutral | System;Guid;TryParseExact;(System.ReadOnlySpan,System.ReadOnlySpan,System.Guid);summary;df-generated | | System;Guid;TryParseExact;(System.String,System.String,System.Guid);summary;df-generated | | System;Guid;TryWriteBytes;(System.Span);summary;df-generated | +| System;Guid;op_Equality;(System.Guid,System.Guid);summary;df-generated | +| System;Guid;op_Inequality;(System.Guid,System.Guid);summary;df-generated | | System;Half;Abs;(System.Half);summary;df-generated | | System;Half;Acos;(System.Half);summary;df-generated | | System;Half;Acosh;(System.Half);summary;df-generated | @@ -47083,6 +47674,8 @@ neutral | System;IntPtr;get_One;();summary;df-generated | | System;IntPtr;get_Size;();summary;df-generated | | System;IntPtr;get_Zero;();summary;df-generated | +| System;IntPtr;op_Addition;(System.IntPtr,System.Int32);summary;df-generated | +| System;IntPtr;op_Subtraction;(System.IntPtr,System.Int32);summary;df-generated | | System;InvalidCastException;InvalidCastException;();summary;df-generated | | System;InvalidCastException;InvalidCastException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | | System;InvalidCastException;InvalidCastException;(System.String);summary;df-generated | @@ -47415,11 +48008,15 @@ neutral | System;ModuleHandle;ResolveTypeHandle;(System.Int32);summary;df-generated | | System;ModuleHandle;ResolveTypeHandle;(System.Int32,System.RuntimeTypeHandle[],System.RuntimeTypeHandle[]);summary;df-generated | | System;ModuleHandle;get_MDStreamVersion;();summary;df-generated | +| System;ModuleHandle;op_Equality;(System.ModuleHandle,System.ModuleHandle);summary;df-generated | +| System;ModuleHandle;op_Inequality;(System.ModuleHandle,System.ModuleHandle);summary;df-generated | | System;MulticastDelegate;Equals;(System.Object);summary;df-generated | | System;MulticastDelegate;GetHashCode;();summary;df-generated | | System;MulticastDelegate;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | | System;MulticastDelegate;MulticastDelegate;(System.Object,System.String);summary;df-generated | | System;MulticastDelegate;MulticastDelegate;(System.Type,System.String);summary;df-generated | +| System;MulticastDelegate;op_Equality;(System.MulticastDelegate,System.MulticastDelegate);summary;df-generated | +| System;MulticastDelegate;op_Inequality;(System.MulticastDelegate,System.MulticastDelegate);summary;df-generated | | System;MulticastNotSupportedException;MulticastNotSupportedException;();summary;df-generated | | System;MulticastNotSupportedException;MulticastNotSupportedException;(System.String);summary;df-generated | | System;MulticastNotSupportedException;MulticastNotSupportedException;(System.String,System.Exception);summary;df-generated | @@ -47573,6 +48170,8 @@ neutral | System;ReadOnlySpan<>;get_IsEmpty;();summary;df-generated | | System;ReadOnlySpan<>;get_Item;(System.Int32);summary;df-generated | | System;ReadOnlySpan<>;get_Length;();summary;df-generated | +| System;ReadOnlySpan<>;op_Equality;(System.ReadOnlySpan<>,System.ReadOnlySpan<>);summary;df-generated | +| System;ReadOnlySpan<>;op_Inequality;(System.ReadOnlySpan<>,System.ReadOnlySpan<>);summary;df-generated | | System;ResolveEventArgs;ResolveEventArgs;(System.String);summary;df-generated | | System;ResolveEventArgs;ResolveEventArgs;(System.String,System.Reflection.Assembly);summary;df-generated | | System;ResolveEventArgs;get_Name;();summary;df-generated | @@ -47581,16 +48180,24 @@ neutral | System;RuntimeFieldHandle;Equals;(System.RuntimeFieldHandle);summary;df-generated | | System;RuntimeFieldHandle;GetHashCode;();summary;df-generated | | System;RuntimeFieldHandle;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System;RuntimeFieldHandle;op_Equality;(System.RuntimeFieldHandle,System.RuntimeFieldHandle);summary;df-generated | +| System;RuntimeFieldHandle;op_Inequality;(System.RuntimeFieldHandle,System.RuntimeFieldHandle);summary;df-generated | | System;RuntimeMethodHandle;Equals;(System.Object);summary;df-generated | | System;RuntimeMethodHandle;Equals;(System.RuntimeMethodHandle);summary;df-generated | | System;RuntimeMethodHandle;GetFunctionPointer;();summary;df-generated | | System;RuntimeMethodHandle;GetHashCode;();summary;df-generated | | System;RuntimeMethodHandle;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System;RuntimeMethodHandle;op_Equality;(System.RuntimeMethodHandle,System.RuntimeMethodHandle);summary;df-generated | +| System;RuntimeMethodHandle;op_Inequality;(System.RuntimeMethodHandle,System.RuntimeMethodHandle);summary;df-generated | | System;RuntimeTypeHandle;Equals;(System.Object);summary;df-generated | | System;RuntimeTypeHandle;Equals;(System.RuntimeTypeHandle);summary;df-generated | | System;RuntimeTypeHandle;GetHashCode;();summary;df-generated | | System;RuntimeTypeHandle;GetModuleHandle;();summary;df-generated | | System;RuntimeTypeHandle;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System;RuntimeTypeHandle;op_Equality;(System.Object,System.RuntimeTypeHandle);summary;df-generated | +| System;RuntimeTypeHandle;op_Equality;(System.RuntimeTypeHandle,System.Object);summary;df-generated | +| System;RuntimeTypeHandle;op_Inequality;(System.Object,System.RuntimeTypeHandle);summary;df-generated | +| System;RuntimeTypeHandle;op_Inequality;(System.RuntimeTypeHandle,System.Object);summary;df-generated | | System;SByte;Abs;(System.SByte);summary;df-generated | | System;SByte;Clamp;(System.SByte,System.SByte,System.SByte);summary;df-generated | | System;SByte;CompareTo;(System.Object);summary;df-generated | @@ -47775,6 +48382,8 @@ neutral | System;Span<>;get_IsEmpty;();summary;df-generated | | System;Span<>;get_Item;(System.Int32);summary;df-generated | | System;Span<>;get_Length;();summary;df-generated | +| System;Span<>;op_Equality;(System.Span<>,System.Span<>);summary;df-generated | +| System;Span<>;op_Inequality;(System.Span<>,System.Span<>);summary;df-generated | | System;StackOverflowException;StackOverflowException;();summary;df-generated | | System;StackOverflowException;StackOverflowException;(System.String);summary;df-generated | | System;StackOverflowException;StackOverflowException;(System.String,System.Exception);summary;df-generated | @@ -47875,6 +48484,8 @@ neutral | System;String;TryCopyTo;(System.Span);summary;df-generated | | System;String;get_Chars;(System.Int32);summary;df-generated | | System;String;get_Length;();summary;df-generated | +| System;String;op_Equality;(System.String,System.String);summary;df-generated | +| System;String;op_Inequality;(System.String,System.String);summary;df-generated | | System;StringComparer;Compare;(System.Object,System.Object);summary;df-generated | | System;StringComparer;Compare;(System.String,System.String);summary;df-generated | | System;StringComparer;Create;(System.Globalization.CultureInfo,System.Boolean);summary;df-generated | @@ -47956,6 +48567,13 @@ neutral | System;TimeOnly;get_Minute;();summary;df-generated | | System;TimeOnly;get_Second;();summary;df-generated | | System;TimeOnly;get_Ticks;();summary;df-generated | +| System;TimeOnly;op_Equality;(System.TimeOnly,System.TimeOnly);summary;df-generated | +| System;TimeOnly;op_GreaterThan;(System.TimeOnly,System.TimeOnly);summary;df-generated | +| System;TimeOnly;op_GreaterThanOrEqual;(System.TimeOnly,System.TimeOnly);summary;df-generated | +| System;TimeOnly;op_Inequality;(System.TimeOnly,System.TimeOnly);summary;df-generated | +| System;TimeOnly;op_LessThan;(System.TimeOnly,System.TimeOnly);summary;df-generated | +| System;TimeOnly;op_LessThanOrEqual;(System.TimeOnly,System.TimeOnly);summary;df-generated | +| System;TimeOnly;op_Subtraction;(System.TimeOnly,System.TimeOnly);summary;df-generated | | System;TimeSpan;Add;(System.TimeSpan);summary;df-generated | | System;TimeSpan;Compare;(System.TimeSpan,System.TimeSpan);summary;df-generated | | System;TimeSpan;CompareTo;(System.Object);summary;df-generated | @@ -48016,6 +48634,19 @@ neutral | System;TimeSpan;get_TotalMilliseconds;();summary;df-generated | | System;TimeSpan;get_TotalMinutes;();summary;df-generated | | System;TimeSpan;get_TotalSeconds;();summary;df-generated | +| System;TimeSpan;op_Addition;(System.TimeSpan,System.TimeSpan);summary;df-generated | +| System;TimeSpan;op_Division;(System.TimeSpan,System.Double);summary;df-generated | +| System;TimeSpan;op_Division;(System.TimeSpan,System.TimeSpan);summary;df-generated | +| System;TimeSpan;op_Equality;(System.TimeSpan,System.TimeSpan);summary;df-generated | +| System;TimeSpan;op_GreaterThan;(System.TimeSpan,System.TimeSpan);summary;df-generated | +| System;TimeSpan;op_GreaterThanOrEqual;(System.TimeSpan,System.TimeSpan);summary;df-generated | +| System;TimeSpan;op_Inequality;(System.TimeSpan,System.TimeSpan);summary;df-generated | +| System;TimeSpan;op_LessThan;(System.TimeSpan,System.TimeSpan);summary;df-generated | +| System;TimeSpan;op_LessThanOrEqual;(System.TimeSpan,System.TimeSpan);summary;df-generated | +| System;TimeSpan;op_Multiply;(System.Double,System.TimeSpan);summary;df-generated | +| System;TimeSpan;op_Multiply;(System.TimeSpan,System.Double);summary;df-generated | +| System;TimeSpan;op_Subtraction;(System.TimeSpan,System.TimeSpan);summary;df-generated | +| System;TimeSpan;op_UnaryNegation;(System.TimeSpan);summary;df-generated | | System;TimeZone;GetDaylightChanges;(System.Int32);summary;df-generated | | System;TimeZone;GetUtcOffset;(System.DateTime);summary;df-generated | | System;TimeZone;IsDaylightSavingTime;(System.DateTime);summary;df-generated | @@ -48036,6 +48667,8 @@ neutral | System;TimeZoneInfo+TransitionTime;get_IsFixedDateRule;();summary;df-generated | | System;TimeZoneInfo+TransitionTime;get_Month;();summary;df-generated | | System;TimeZoneInfo+TransitionTime;get_Week;();summary;df-generated | +| System;TimeZoneInfo+TransitionTime;op_Equality;(System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime);summary;df-generated | +| System;TimeZoneInfo+TransitionTime;op_Inequality;(System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime);summary;df-generated | | System;TimeZoneInfo;ClearCachedData;();summary;df-generated | | System;TimeZoneInfo;ConvertTime;(System.DateTimeOffset,System.TimeZoneInfo);summary;df-generated | | System;TimeZoneInfo;ConvertTimeBySystemTimeZoneId;(System.DateTimeOffset,System.String);summary;df-generated | @@ -48267,6 +48900,8 @@ neutral | System;Type;get_StructLayoutAttribute;();summary;df-generated | | System;Type;get_TypeHandle;();summary;df-generated | | System;Type;get_UnderlyingSystemType;();summary;df-generated | +| System;Type;op_Equality;(System.Type,System.Type);summary;df-generated | +| System;Type;op_Inequality;(System.Type,System.Type);summary;df-generated | | System;TypeAccessException;TypeAccessException;();summary;df-generated | | System;TypeAccessException;TypeAccessException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | | System;TypeAccessException;TypeAccessException;(System.String);summary;df-generated | @@ -48508,6 +49143,8 @@ neutral | System;UIntPtr;get_One;();summary;df-generated | | System;UIntPtr;get_Size;();summary;df-generated | | System;UIntPtr;get_Zero;();summary;df-generated | +| System;UIntPtr;op_Addition;(System.UIntPtr,System.Int32);summary;df-generated | +| System;UIntPtr;op_Subtraction;(System.UIntPtr,System.Int32);summary;df-generated | | System;UnauthorizedAccessException;UnauthorizedAccessException;();summary;df-generated | | System;UnauthorizedAccessException;UnauthorizedAccessException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | | System;UnauthorizedAccessException;UnauthorizedAccessException;(System.String);summary;df-generated | @@ -48546,6 +49183,8 @@ neutral | System;Uri;get_Port;();summary;df-generated | | System;Uri;get_Segments;();summary;df-generated | | System;Uri;get_UserEscaped;();summary;df-generated | +| System;Uri;op_Equality;(System.Uri,System.Uri);summary;df-generated | +| System;Uri;op_Inequality;(System.Uri,System.Uri);summary;df-generated | | System;UriBuilder;Equals;(System.Object);summary;df-generated | | System;UriBuilder;GetHashCode;();summary;df-generated | | System;UriBuilder;ToString;();summary;df-generated | @@ -48683,6 +49322,12 @@ neutral | System;Version;get_Minor;();summary;df-generated | | System;Version;get_MinorRevision;();summary;df-generated | | System;Version;get_Revision;();summary;df-generated | +| System;Version;op_Equality;(System.Version,System.Version);summary;df-generated | +| System;Version;op_GreaterThan;(System.Version,System.Version);summary;df-generated | +| System;Version;op_GreaterThanOrEqual;(System.Version,System.Version);summary;df-generated | +| System;Version;op_Inequality;(System.Version,System.Version);summary;df-generated | +| System;Version;op_LessThan;(System.Version,System.Version);summary;df-generated | +| System;Version;op_LessThanOrEqual;(System.Version,System.Version);summary;df-generated | | System;WeakReference;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | | System;WeakReference;WeakReference;(System.Object);summary;df-generated | | System;WeakReference;WeakReference;(System.Object,System.Boolean);summary;df-generated | diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected index 376b36977ac..fc5e30e8a28 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected @@ -4965,6 +4965,8 @@ summary | System.Data.SqlTypes;SqlBinary;false;ToSqlGuid;();;Argument[this];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlBinary;false;WriteXml;(System.Xml.XmlWriter);;Argument[this];Argument[0];taint;df-generated | | System.Data.SqlTypes;SqlBinary;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.Data.SqlTypes;SqlBinary;false;op_Addition;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[0];ReturnValue;taint;df-generated | +| System.Data.SqlTypes;SqlBinary;false;op_Addition;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[1];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlBytes;false;Read;(System.Int64,System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[1].Element;taint;df-generated | | System.Data.SqlTypes;SqlBytes;false;ReadXml;(System.Xml.XmlReader);;Argument[0];Argument[this];taint;df-generated | | System.Data.SqlTypes;SqlBytes;false;SqlBytes;(System.Byte[]);;Argument[0].Element;Argument[this];taint;df-generated | @@ -4984,6 +4986,7 @@ summary | System.Data.SqlTypes;SqlDecimal;false;Floor;(System.Data.SqlTypes.SqlDecimal);;Argument[0];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlDecimal;false;Round;(System.Data.SqlTypes.SqlDecimal,System.Int32);;Argument[0];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlDecimal;false;Truncate;(System.Data.SqlTypes.SqlDecimal,System.Int32);;Argument[0];ReturnValue;taint;df-generated | +| System.Data.SqlTypes;SqlDecimal;false;op_UnaryNegation;(System.Data.SqlTypes.SqlDecimal);;Argument[0];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlGuid;false;SqlGuid;(System.Byte[]);;Argument[0].Element;Argument[this];taint;df-generated | | System.Data.SqlTypes;SqlGuid;false;ToByteArray;();;Argument[this];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlGuid;false;ToSqlBinary;();;Argument[this];ReturnValue;taint;df-generated | @@ -5001,6 +5004,8 @@ summary | System.Data.SqlTypes;SqlString;false;WriteXml;(System.Xml.XmlWriter);;Argument[this];Argument[0];taint;df-generated | | System.Data.SqlTypes;SqlString;false;get_CompareInfo;();;Argument[this];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlString;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.Data.SqlTypes;SqlString;false;op_Addition;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);;Argument[0];ReturnValue;taint;df-generated | +| System.Data.SqlTypes;SqlString;false;op_Addition;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);;Argument[1];ReturnValue;taint;df-generated | | System.Data.SqlTypes;SqlXml;false;SqlXml;(System.IO.Stream);;Argument[0];Argument[this];taint;df-generated | | System.Data;Constraint;false;SetDataSet;(System.Data.DataSet);;Argument[0];Argument[this];taint;df-generated | | System.Data;Constraint;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | @@ -9263,6 +9268,11 @@ summary | System.Numerics;Matrix4x4;false;Negate;(System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;df-generated | | System.Numerics;Matrix4x4;false;Subtract;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;df-generated | | System.Numerics;Matrix4x4;false;Transpose;(System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;df-generated | +| System.Numerics;Matrix4x4;false;op_Addition;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;df-generated | +| System.Numerics;Matrix4x4;false;op_Multiply;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;df-generated | +| System.Numerics;Matrix4x4;false;op_Multiply;(System.Numerics.Matrix4x4,System.Single);;Argument[0];ReturnValue;taint;df-generated | +| System.Numerics;Matrix4x4;false;op_Subtraction;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;df-generated | +| System.Numerics;Matrix4x4;false;op_UnaryNegation;(System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;df-generated | | System.Numerics;Plane;false;Normalize;(System.Numerics.Plane);;Argument[0];ReturnValue;taint;df-generated | | System.Numerics;Plane;false;Plane;(System.Numerics.Vector3,System.Single);;Argument[0];Argument[this];taint;df-generated | | System.Numerics;Plane;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | @@ -10170,14 +10180,17 @@ summary | System.Runtime.InteropServices;SequenceMarshal;false;TryGetReadOnlySequenceSegment<>;(System.Buffers.ReadOnlySequence,System.Buffers.ReadOnlySequenceSegment,System.Int32,System.Buffers.ReadOnlySequenceSegment,System.Int32);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector64;false;Abs<>;(System.Runtime.Intrinsics.Vector64);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector64;false;WithElement<>;(System.Runtime.Intrinsics.Vector64,System.Int32,T);;Argument[0];ReturnValue;taint;df-generated | +| System.Runtime.Intrinsics;Vector64<>;false;op_UnaryPlus;(System.Runtime.Intrinsics.Vector64<>);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector128;false;Abs<>;(System.Runtime.Intrinsics.Vector128);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector128;false;WithElement<>;(System.Runtime.Intrinsics.Vector128,System.Int32,T);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector128;false;WithLower<>;(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector64);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector128;false;WithUpper<>;(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector64);;Argument[0];ReturnValue;taint;df-generated | +| System.Runtime.Intrinsics;Vector128<>;false;op_UnaryPlus;(System.Runtime.Intrinsics.Vector128<>);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector256;false;Abs<>;(System.Runtime.Intrinsics.Vector256);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector256;false;WithElement<>;(System.Runtime.Intrinsics.Vector256,System.Int32,T);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector256;false;WithLower<>;(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector128);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Intrinsics;Vector256;false;WithUpper<>;(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector128);;Argument[0];ReturnValue;taint;df-generated | +| System.Runtime.Intrinsics;Vector256<>;false;op_UnaryPlus;(System.Runtime.Intrinsics.Vector256<>);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Loader;AssemblyDependencyResolver;false;ResolveAssemblyToPath;(System.Reflection.AssemblyName);;Argument[0];ReturnValue;taint;df-generated | | System.Runtime.Loader;AssemblyDependencyResolver;false;ResolveAssemblyToPath;(System.Reflection.AssemblyName);;Argument[this];ReturnValue;taint;df-generated | | System.Runtime.Loader;AssemblyDependencyResolver;false;ResolveUnmanagedDllToPath;(System.String);;Argument[0];ReturnValue;taint;df-generated | @@ -12198,6 +12211,8 @@ summary | System.Xml.Linq;XNamespace;false;GetName;(System.String);;Argument[this];ReturnValue;taint;df-generated | | System.Xml.Linq;XNamespace;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | | System.Xml.Linq;XNamespace;false;get_NamespaceName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Xml.Linq;XNamespace;false;op_Addition;(System.Xml.Linq.XNamespace,System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.Xml.Linq;XNamespace;false;op_Addition;(System.Xml.Linq.XNamespace,System.String);;Argument[1];ReturnValue;taint;df-generated | | System.Xml.Linq;XNode;false;AddAfterSelf;(System.Object);;Argument[this];Argument[0];taint;df-generated | | System.Xml.Linq;XNode;false;AddBeforeSelf;(System.Object);;Argument[this];Argument[0];taint;df-generated | | System.Xml.Linq;XNode;false;Ancestors;();;Argument[this];ReturnValue;taint;df-generated | @@ -14450,6 +14465,7 @@ summary | System;StringNormalizationExtensions;false;Normalize;(System.String,System.Text.NormalizationForm);;Argument[0];ReturnValue;taint;df-generated | | System;TimeOnly;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;df-generated | | System;TimeOnly;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;df-generated | +| System;TimeSpan;false;op_UnaryPlus;(System.TimeSpan);;Argument[0];ReturnValue;taint;df-generated | | System;TimeZone;true;ToLocalTime;(System.DateTime);;Argument[0];ReturnValue;taint;df-generated | | System;TimeZone;true;ToUniversalTime;(System.DateTime);;Argument[0];ReturnValue;taint;df-generated | | System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime);;Argument[0];ReturnValue;taint;df-generated | From 2d9ff85753fcc92632be0255e2adc45456a28b3a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Nov 2023 03:19:42 +0000 Subject: [PATCH 050/122] Bump the extractor-dependencies group in /go/extractor with 1 update Bumps the extractor-dependencies group in /go/extractor with 1 update: [golang.org/x/mod](https://github.com/golang/mod). - [Commits](https://github.com/golang/mod/compare/v0.13.0...v0.14.0) --- updated-dependencies: - dependency-name: golang.org/x/mod dependency-type: direct:production update-type: version-update:semver-minor dependency-group: extractor-dependencies ... Signed-off-by: dependabot[bot] --- go/extractor/go.mod | 2 +- go/extractor/go.sum | 4 ++-- go/extractor/vendor/golang.org/x/mod/modfile/rule.go | 12 ++++++------ go/extractor/vendor/modules.txt | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/go/extractor/go.mod b/go/extractor/go.mod index bd988f818d2..aa6d2a0048c 100644 --- a/go/extractor/go.mod +++ b/go/extractor/go.mod @@ -3,7 +3,7 @@ module github.com/github/codeql-go/extractor go 1.21 require ( - golang.org/x/mod v0.13.0 + golang.org/x/mod v0.14.0 golang.org/x/tools v0.14.0 ) diff --git a/go/extractor/go.sum b/go/extractor/go.sum index 2f975f56f3b..5d6ee2aa813 100644 --- a/go/extractor/go.sum +++ b/go/extractor/go.sum @@ -1,5 +1,5 @@ -golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= -golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= diff --git a/go/extractor/vendor/golang.org/x/mod/modfile/rule.go b/go/extractor/vendor/golang.org/x/mod/modfile/rule.go index e0869fa3868..35fd1f534cf 100644 --- a/go/extractor/vendor/golang.org/x/mod/modfile/rule.go +++ b/go/extractor/vendor/golang.org/x/mod/modfile/rule.go @@ -542,7 +542,7 @@ func parseReplace(filename string, line *Line, verb string, args []string, fix V if strings.Contains(ns, "@") { return nil, errorf("replacement module must match format 'path version', not 'path@version'") } - return nil, errorf("replacement module without version must be directory path (rooted or starting with ./ or ../)") + return nil, errorf("replacement module without version must be directory path (rooted or starting with . or ..)") } if filepath.Separator == '/' && strings.Contains(ns, `\`) { return nil, errorf("replacement directory appears to be Windows path (on a non-windows system)") @@ -555,7 +555,6 @@ func parseReplace(filename string, line *Line, verb string, args []string, fix V } if IsDirectoryPath(ns) { return nil, errorf("replacement module directory path %q cannot have version", ns) - } } return &Replace{ @@ -679,14 +678,15 @@ func (f *WorkFile) add(errs *ErrorList, line *Line, verb string, args []string, } } -// IsDirectoryPath reports whether the given path should be interpreted -// as a directory path. Just like on the go command line, relative paths +// IsDirectoryPath reports whether the given path should be interpreted as a directory path. +// Just like on the go command line, relative paths starting with a '.' or '..' path component // and rooted paths are directory paths; the rest are module paths. func IsDirectoryPath(ns string) bool { // Because go.mod files can move from one system to another, // we check all known path syntaxes, both Unix and Windows. - return strings.HasPrefix(ns, "./") || strings.HasPrefix(ns, "../") || strings.HasPrefix(ns, "/") || - strings.HasPrefix(ns, `.\`) || strings.HasPrefix(ns, `..\`) || strings.HasPrefix(ns, `\`) || + return ns == "." || strings.HasPrefix(ns, "./") || strings.HasPrefix(ns, `.\`) || + ns == ".." || strings.HasPrefix(ns, "../") || strings.HasPrefix(ns, `..\`) || + strings.HasPrefix(ns, "/") || strings.HasPrefix(ns, `\`) || len(ns) >= 2 && ('A' <= ns[0] && ns[0] <= 'Z' || 'a' <= ns[0] && ns[0] <= 'z') && ns[1] == ':' } diff --git a/go/extractor/vendor/modules.txt b/go/extractor/vendor/modules.txt index c4069b86f18..6915c931e6d 100644 --- a/go/extractor/vendor/modules.txt +++ b/go/extractor/vendor/modules.txt @@ -1,4 +1,4 @@ -# golang.org/x/mod v0.13.0 +# golang.org/x/mod v0.14.0 ## explicit; go 1.18 golang.org/x/mod/internal/lazyregexp golang.org/x/mod/modfile From 467854ba4b4aae4e22a4eab0bb7903165c28d581 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 6 Nov 2023 09:54:00 +0100 Subject: [PATCH 051/122] C#: Convert a data flow test to use inline test expectations --- .../ql/test/TestUtilities/InlineFlowTest.qll | 6 ++++- .../library-tests/dataflow/types/Types.cs | 26 +++++++++---------- .../dataflow/types/Types.expected | 1 + .../library-tests/dataflow/types/Types.ql | 11 +++++--- 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/csharp/ql/test/TestUtilities/InlineFlowTest.qll b/csharp/ql/test/TestUtilities/InlineFlowTest.qll index 1d0fe9cc067..b7d7226e812 100644 --- a/csharp/ql/test/TestUtilities/InlineFlowTest.qll +++ b/csharp/ql/test/TestUtilities/InlineFlowTest.qll @@ -26,7 +26,11 @@ private module FlowTestImpl implements InputSig { } string getArgString(DataFlow::Node src, DataFlow::Node sink) { - (if exists(getSourceArgString(src)) then result = getSourceArgString(src) else result = "") and + ( + result = getSourceArgString(src) + or + not exists(getSourceArgString(src)) and result = "line:" + src.getLocation().getStartLine() + ) and exists(sink) } } diff --git a/csharp/ql/test/library-tests/dataflow/types/Types.cs b/csharp/ql/test/library-tests/dataflow/types/Types.cs index 9cb505004b7..0ffd2f6f907 100644 --- a/csharp/ql/test/library-tests/dataflow/types/Types.cs +++ b/csharp/ql/test/library-tests/dataflow/types/Types.cs @@ -13,7 +13,7 @@ class Types class D : B { - public override void M() => Sink(this); + public override void M() => Sink(this); // $ hasValueFlow=line:32 $ hasValueFlow=line:33 $ hasValueFlow=line:40 } static void M1() @@ -41,13 +41,13 @@ class Types M9(new D()); // no flow object o = null; // flow - Sink(o); + Sink(o); // $ hasValueFlow=line:43 } static void M2(A a) { if (a is C c) - Sink(c); + Sink(c); // $ hasValueFlow=line:23 } static void M3(A a) @@ -55,18 +55,18 @@ class Types switch (a) { case D d: - Sink(d); + Sink(d); // $ hasValueFlow=line:35 break; } } - static void M4(A a) => Sink((C)a); + static void M4(A a) => Sink((C)a); // $ hasValueFlow=line:25 - static void M5(T x) => Sink(x); + static void M5(T x) => Sink(x); // $ hasValueFlow=line:26 $ hasValueFlow=line:37 - static void M6(T x) where T : A => Sink(x); + static void M6(T x) where T : A => Sink(x); // $ hasValueFlow=line:27 $ hasValueFlow=line:38 - static void M7(T x) where T : class => Sink(x); + static void M7(T x) where T : class => Sink(x); // $ hasValueFlow=line:28 $ hasValueFlow=line:39 static void M8(T x) { @@ -77,7 +77,7 @@ class Types static void M9(A a) { if (a is B b) - Sink(b); + Sink(b); // $ hasValueFlow=line:30 } static void Sink(T x) { } @@ -112,15 +112,15 @@ class Types public override void M() { - Sink(this.Field); + Sink(this.Field); // $ hasValueFlow=line:110 } void M10() { var a = new A(); var e2 = new E2(); - Sink(Through(a)); // flow - Sink(Through(e2)); // flow + Sink(Through(a)); // $ hasValueFlow=line:120 + Sink(Through(e2)); // $ hasValueFlow=line:121 Sink((E2)Through(a)); // no flow Sink((A)Through(e2)); // no flow } @@ -150,6 +150,6 @@ class Types class FieldC : FieldA { - public override void M() => Sink(this.Field); + public override void M() => Sink(this.Field); // $ hasValueFlow=line:144 } } diff --git a/csharp/ql/test/library-tests/dataflow/types/Types.expected b/csharp/ql/test/library-tests/dataflow/types/Types.expected index 5cf9e17191f..fc5e3ed5e6e 100644 --- a/csharp/ql/test/library-tests/dataflow/types/Types.expected +++ b/csharp/ql/test/library-tests/dataflow/types/Types.expected @@ -1,3 +1,4 @@ +testFailures edges | Types.cs:7:21:7:25 | this : D | Types.cs:7:32:7:35 | this access : D | | Types.cs:7:32:7:35 | this access : D | Types.cs:16:30:16:30 | this : D | diff --git a/csharp/ql/test/library-tests/dataflow/types/Types.ql b/csharp/ql/test/library-tests/dataflow/types/Types.ql index 3b11ab505e3..1a8728df5a3 100644 --- a/csharp/ql/test/library-tests/dataflow/types/Types.ql +++ b/csharp/ql/test/library-tests/dataflow/types/Types.ql @@ -3,7 +3,8 @@ */ import csharp -import Types::PathGraph +import TestUtilities.InlineFlowTest +import PathGraph module TypesConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node src) { @@ -17,10 +18,12 @@ module TypesConfig implements DataFlow::ConfigSig { mc.getAnArgument() = sink.asExpr() ) } + + int fieldFlowBranchLimit() { result = 1000 } } -module Types = DataFlow::Global; +import ValueFlowTest -from Types::PathNode source, Types::PathNode sink -where Types::flowPath(source, sink) +from PathNode source, PathNode sink +where flowPath(source, sink) select source, source, sink, "$@", sink, sink.toString() From 4bcf9e50a01d434e4b77f0ceb97c26b94f7b7ed6 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 6 Nov 2023 09:52:39 +0100 Subject: [PATCH 052/122] C#: Address review comments. --- .../Assets.cs | 58 ++++++++++--------- ...Dependencies.cs => DependencyContainer.cs} | 20 +++---- .../DependencyManager.cs | 4 +- .../Semmle.Extraction.Tests/Assets.cs | 16 ++--- 4 files changed, 48 insertions(+), 50 deletions(-) rename csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/{Dependencies.cs => DependencyContainer.cs} (81%) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs index 1406e559d7a..7558fd7970f 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using Newtonsoft.Json.Linq; +using Semmle.Util; namespace Semmle.Extraction.CSharp.DependencyFetching { @@ -29,21 +30,15 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// /// Class needed for deserializing parts of an assets file. /// It holds information about a reference. + /// + /// Type carries the type of the reference. + /// We are only interested in package references. + /// + /// Compile holds information about the files needed for compilation. + /// However, if it is a .NET framework reference we assume that all files in the + /// package are needed for compilation. /// - private class ReferenceInfo - { - /// - /// This carries the type of the reference. - /// We are only interested in package references. - /// - public string Type { get; set; } = ""; - - /// - /// If not a .NET framework reference we assume that only the files mentioned - /// in the compile section are needed for compilation. - /// - public Dictionary Compile { get; set; } = new(); - } + private record class ReferenceInfo(string? Type, Dictionary? Compile); /// /// Add the package dependencies from the assets file to dependencies. @@ -74,7 +69,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// } /// /// Returns dependencies - /// Required = { + /// RequiredPaths = { /// "castle.core/4.4.1/lib/netstandard1.5/Castle.Core.dll", /// "json.net/1.0.33/lib/netstandard2.0/Json.Net.dll" /// } @@ -83,7 +78,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// "json.net" /// } /// - private Dependencies AddPackageDependencies(JObject json, Dependencies dependencies) + private DependencyContainer AddPackageDependencies(JObject json, DependencyContainer dependencies) { // If there are more than one framework we need to pick just one. // To ensure stability we pick one based on the lexicographic order of @@ -103,23 +98,29 @@ namespace Semmle.Extraction.CSharp.DependencyFetching // Find all the compile dependencies for each reference and // create the relative path to the dependency. - return references - .Aggregate(dependencies, (deps, r) => + references + .ForEach(r => { var info = r.Value; var name = r.Key.ToLowerInvariant(); if (info.Type != "package") { - return deps; + return; } // If this is a .NET framework reference then include everything. - return netFrameworks.Any(framework => name.StartsWith(framework)) - ? deps.Add(name, "") - : info - .Compile - .Aggregate(deps, (d, p) => d.Add(name, p.Key)); + if (netFrameworks.Any(framework => name.StartsWith(framework))) + { + dependencies.Add(name); + } + else + { + info.Compile? + .ForEach(r => dependencies.Add(name, r.Key)); + } }); + + return dependencies; } /// @@ -127,7 +128,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// (together with used package information) required for compilation. /// /// True if parsing succeeds, otherwise false. - public bool TryParse(string json, Dependencies dependencies) + public bool TryParse(string json, DependencyContainer dependencies) { try { @@ -142,15 +143,16 @@ namespace Semmle.Extraction.CSharp.DependencyFetching } } - public static Dependencies GetCompilationDependencies(ProgressMonitor progressMonitor, IEnumerable assets) + public static DependencyContainer GetCompilationDependencies(ProgressMonitor progressMonitor, IEnumerable assets) { var parser = new Assets(progressMonitor); - return assets.Aggregate(new Dependencies(), (dependencies, asset) => + var dependencies = new DependencyContainer(); + assets.ForEach(asset => { var json = File.ReadAllText(asset); parser.TryParse(json, dependencies); - return dependencies; }); + return dependencies; } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Dependencies.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyContainer.cs similarity index 81% rename from csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Dependencies.cs rename to csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyContainer.cs index 34f21269350..4c0586c7f83 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Dependencies.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyContainer.cs @@ -7,9 +7,9 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// /// Container class for dependencies found in the assets file. /// - internal class Dependencies + internal class DependencyContainer { - private readonly List required = new(); + private readonly List requiredPaths = new(); private readonly HashSet usedPackages = new(); /// @@ -33,9 +33,9 @@ namespace Semmle.Extraction.CSharp.DependencyFetching .First(); /// - /// Dependencies required for Compilation. + /// Paths to dependencies required for compilation. /// - public IEnumerable Required => required; + public IEnumerable RequiredPaths => requiredPaths; /// /// Packages that are used as a part of the required dependencies. @@ -45,29 +45,25 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// /// Add a dependency inside a package. /// - public Dependencies Add(string package, string dependency) + public void Add(string package, string dependency) { var p = package.Replace('/', Path.DirectorySeparatorChar); var d = dependency.Replace('/', Path.DirectorySeparatorChar); var path = Path.Combine(p, ParseFilePath(d)); - required.Add(path); + requiredPaths.Add(path); usedPackages.Add(GetPackageName(p)); - - return this; } /// /// Add a dependency to an entire package /// - public Dependencies Add(string package) + public void Add(string package) { var p = package.Replace('/', Path.DirectorySeparatorChar); - required.Add(p); + requiredPaths.Add(p); usedPackages.Add(GetPackageName(p)); - - return this; } } } \ No newline at end of file diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index cb4f0b82ee3..30e0c5c0354 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -104,7 +104,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching var dependencies = Assets.GetCompilationDependencies(progressMonitor, assets1.Union(assets2)); var paths = dependencies - .Required + .RequiredPaths .Select(d => Path.Combine(packageDirectory.DirInfo.FullName, d)) .ToList(); dllPaths.AddRange(paths); @@ -303,7 +303,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching .Select(d => d.FullName); } - private void LogAllUnusedPackages(Dependencies dependencies) => + private void LogAllUnusedPackages(DependencyContainer dependencies) => GetAllPackageDirectories() .Where(package => !dependencies.UsedPackages.Contains(package)) .ForEach(package => progressMonitor.LogInfo($"Unused package: {package}")); diff --git a/csharp/extractor/Semmle.Extraction.Tests/Assets.cs b/csharp/extractor/Semmle.Extraction.Tests/Assets.cs index 90781d13b30..1dbd6f9d41c 100644 --- a/csharp/extractor/Semmle.Extraction.Tests/Assets.cs +++ b/csharp/extractor/Semmle.Extraction.Tests/Assets.cs @@ -14,17 +14,17 @@ namespace Semmle.Extraction.Tests // Setup var assets = new Assets(new ProgressMonitor(new LoggerStub())); var json = assetsJson1; - var dependencies = new Dependencies(); + var dependencies = new DependencyContainer(); // Execute var success = assets.TryParse(json, dependencies); // Verify Assert.True(success); - Assert.Equal(5, dependencies.Required.Count()); + Assert.Equal(5, dependencies.RequiredPaths.Count()); Assert.Equal(4, dependencies.UsedPackages.Count()); - var normalizedPaths = dependencies.Required.Select(FixExpectedPathOnWindows); + var normalizedPaths = dependencies.RequiredPaths.Select(FixExpectedPathOnWindows); // Required references Assert.Contains("castle.core/4.4.1/lib/netstandard1.5/Castle.Core.dll", normalizedPaths); Assert.Contains("castle.core/4.4.1/lib/netstandard1.5/Castle.Core2.dll", normalizedPaths); @@ -44,16 +44,16 @@ namespace Semmle.Extraction.Tests // Setup var assets = new Assets(new ProgressMonitor(new LoggerStub())); var json = assetsJson2; - var dependencies = new Dependencies(); + var dependencies = new DependencyContainer(); // Execute var success = assets.TryParse(json, dependencies); // Verify Assert.True(success); - Assert.Equal(2, dependencies.Required.Count()); + Assert.Equal(2, dependencies.RequiredPaths.Count()); - var normalizedPaths = dependencies.Required.Select(FixExpectedPathOnWindows); + var normalizedPaths = dependencies.RequiredPaths.Select(FixExpectedPathOnWindows); // Required references Assert.Contains("microsoft.netframework.referenceassemblies/1.0.3", normalizedPaths); Assert.Contains("microsoft.netframework.referenceassemblies.net48/1.0.3", normalizedPaths); @@ -68,14 +68,14 @@ namespace Semmle.Extraction.Tests // Setup var assets = new Assets(new ProgressMonitor(new LoggerStub())); var json = "garbage data"; - var dependencies = new Dependencies(); + var dependencies = new DependencyContainer(); // Execute var success = assets.TryParse(json, dependencies); // Verify Assert.False(success); - Assert.Empty(dependencies.Required); + Assert.Empty(dependencies.RequiredPaths); } private readonly string assetsJson1 = """ From b99e44c3caae76267f5c45b7979192abfc80ff24 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 6 Nov 2023 08:59:54 +0000 Subject: [PATCH 053/122] Swift: Fix the Data test. --- .../CWE-321/HardcodedEncryptionKey.expected | 26 +++++++++---------- .../Security/CWE-321/sqlite3_c_api.swift | 12 +++++++-- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/swift/ql/test/query-tests/Security/CWE-321/HardcodedEncryptionKey.expected b/swift/ql/test/query-tests/Security/CWE-321/HardcodedEncryptionKey.expected index f00fa6e67ee..a2cd88cd3f8 100644 --- a/swift/ql/test/query-tests/Security/CWE-321/HardcodedEncryptionKey.expected +++ b/swift/ql/test/query-tests/Security/CWE-321/HardcodedEncryptionKey.expected @@ -64,11 +64,11 @@ edges | rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:81:102:81:102 | myConstKey | | rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:83:92:83:92 | myConstKey | | rncryptor.swift:60:24:60:24 | abcdef123456 | rncryptor.swift:60:19:60:38 | call to Data.init(_:) | -| sqlite3_c_api.swift:33:19:33:38 | call to Data.init(_:) | sqlite3_c_api.swift:40:2:40:2 | myConstKey | -| sqlite3_c_api.swift:33:24:33:24 | abcdef123456 | sqlite3_c_api.swift:33:19:33:38 | call to Data.init(_:) | -| sqlite3_c_api.swift:40:2:40:2 | myConstKey | sqlite3_c_api.swift:40:31:40:31 | buffer [Collection element] | -| sqlite3_c_api.swift:40:31:40:31 | buffer [Collection element] | sqlite3_c_api.swift:41:36:41:36 | buffer | -| sqlite3_c_api.swift:40:31:40:31 | buffer [Collection element] | sqlite3_c_api.swift:42:38:42:38 | buffer | +| sqlite3_c_api.swift:41:19:41:38 | call to Data.init(_:) | sqlite3_c_api.swift:48:2:48:2 | myConstKey | +| sqlite3_c_api.swift:41:24:41:24 | abcdef123456 | sqlite3_c_api.swift:41:19:41:38 | call to Data.init(_:) | +| sqlite3_c_api.swift:48:2:48:2 | myConstKey | sqlite3_c_api.swift:48:31:48:31 | buffer [Collection element] | +| sqlite3_c_api.swift:48:31:48:31 | buffer [Collection element] | sqlite3_c_api.swift:49:36:49:36 | buffer | +| sqlite3_c_api.swift:48:31:48:31 | buffer [Collection element] | sqlite3_c_api.swift:50:38:50:38 | buffer | nodes | SQLite.swift:43:13:43:13 | hardcoded_key | semmle.label | hardcoded_key | | SQLite.swift:45:23:45:23 | hardcoded_key | semmle.label | hardcoded_key | @@ -143,12 +143,12 @@ nodes | rncryptor.swift:80:94:80:94 | myConstKey | semmle.label | myConstKey | | rncryptor.swift:81:102:81:102 | myConstKey | semmle.label | myConstKey | | rncryptor.swift:83:92:83:92 | myConstKey | semmle.label | myConstKey | -| sqlite3_c_api.swift:33:19:33:38 | call to Data.init(_:) | semmle.label | call to Data.init(_:) | -| sqlite3_c_api.swift:33:24:33:24 | abcdef123456 | semmle.label | abcdef123456 | -| sqlite3_c_api.swift:40:2:40:2 | myConstKey | semmle.label | myConstKey | -| sqlite3_c_api.swift:40:31:40:31 | buffer [Collection element] | semmle.label | buffer [Collection element] | -| sqlite3_c_api.swift:41:36:41:36 | buffer | semmle.label | buffer | -| sqlite3_c_api.swift:42:38:42:38 | buffer | semmle.label | buffer | +| sqlite3_c_api.swift:41:19:41:38 | call to Data.init(_:) | semmle.label | call to Data.init(_:) | +| sqlite3_c_api.swift:41:24:41:24 | abcdef123456 | semmle.label | abcdef123456 | +| sqlite3_c_api.swift:48:2:48:2 | myConstKey | semmle.label | myConstKey | +| sqlite3_c_api.swift:48:31:48:31 | buffer [Collection element] | semmle.label | buffer [Collection element] | +| sqlite3_c_api.swift:49:36:49:36 | buffer | semmle.label | buffer | +| sqlite3_c_api.swift:50:38:50:38 | buffer | semmle.label | buffer | subpaths | misc.swift:53:25:53:25 | myConstKey | misc.swift:30:7:30:7 | value | file://:0:0:0:0 | [post] self | misc.swift:53:2:53:2 | [post] config | | misc.swift:53:25:53:25 | myConstKey | misc.swift:30:7:30:7 | value | file://:0:0:0:0 | [post] self [encryptionKey] | misc.swift:53:2:53:2 | [post] config [encryptionKey] | @@ -204,5 +204,5 @@ subpaths | rncryptor.swift:80:94:80:94 | myConstKey | rncryptor.swift:60:24:60:24 | abcdef123456 | rncryptor.swift:80:94:80:94 | myConstKey | The key 'myConstKey' has been initialized with hard-coded values from $@. | rncryptor.swift:60:24:60:24 | abcdef123456 | abcdef123456 | | rncryptor.swift:81:102:81:102 | myConstKey | rncryptor.swift:60:24:60:24 | abcdef123456 | rncryptor.swift:81:102:81:102 | myConstKey | The key 'myConstKey' has been initialized with hard-coded values from $@. | rncryptor.swift:60:24:60:24 | abcdef123456 | abcdef123456 | | rncryptor.swift:83:92:83:92 | myConstKey | rncryptor.swift:60:24:60:24 | abcdef123456 | rncryptor.swift:83:92:83:92 | myConstKey | The key 'myConstKey' has been initialized with hard-coded values from $@. | rncryptor.swift:60:24:60:24 | abcdef123456 | abcdef123456 | -| sqlite3_c_api.swift:41:36:41:36 | buffer | sqlite3_c_api.swift:33:24:33:24 | abcdef123456 | sqlite3_c_api.swift:41:36:41:36 | buffer | The key 'buffer' has been initialized with hard-coded values from $@. | sqlite3_c_api.swift:33:24:33:24 | abcdef123456 | abcdef123456 | -| sqlite3_c_api.swift:42:38:42:38 | buffer | sqlite3_c_api.swift:33:24:33:24 | abcdef123456 | sqlite3_c_api.swift:42:38:42:38 | buffer | The key 'buffer' has been initialized with hard-coded values from $@. | sqlite3_c_api.swift:33:24:33:24 | abcdef123456 | abcdef123456 | +| sqlite3_c_api.swift:49:36:49:36 | buffer | sqlite3_c_api.swift:41:24:41:24 | abcdef123456 | sqlite3_c_api.swift:49:36:49:36 | buffer | The key 'buffer' has been initialized with hard-coded values from $@. | sqlite3_c_api.swift:41:24:41:24 | abcdef123456 | abcdef123456 | +| sqlite3_c_api.swift:50:38:50:38 | buffer | sqlite3_c_api.swift:41:24:41:24 | abcdef123456 | sqlite3_c_api.swift:50:38:50:38 | buffer | The key 'buffer' has been initialized with hard-coded values from $@. | sqlite3_c_api.swift:41:24:41:24 | abcdef123456 | abcdef123456 | diff --git a/swift/ql/test/query-tests/Security/CWE-321/sqlite3_c_api.swift b/swift/ql/test/query-tests/Security/CWE-321/sqlite3_c_api.swift index bc84cba8d93..cc3fbf46bda 100644 --- a/swift/ql/test/query-tests/Security/CWE-321/sqlite3_c_api.swift +++ b/swift/ql/test/query-tests/Security/CWE-321/sqlite3_c_api.swift @@ -1,11 +1,19 @@ // --- stubs --- -struct Data { +protocol ContiguousBytes { + func withUnsafeBytes(_ body: (UnsafeRawBufferPointer) throws -> R) rethrows -> R +} + +struct Data : ContiguousBytes { init(_ elements: S) { count = 0 } + func withUnsafeBytes(_ body: (UnsafeRawBufferPointer) throws -> ResultType) rethrows -> ResultType { + return 0 as! ResultType + } + func withUnsafeBytes(_ body: (UnsafePointer) throws -> ResultType) rethrows -> ResultType { - return 0 as! ResultType//body(0 as UnsafePointer()) + return 0 as! ResultType } var count: Int From 602d16d73febd6bfe2fb1f25041ebab10314b682 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 6 Nov 2023 10:18:32 +0100 Subject: [PATCH 054/122] C#: Add another data flow test --- .../library-tests/dataflow/types/Types.cs | 22 +++++++++++++++++++ .../dataflow/types/Types.expected | 8 +++++++ 2 files changed, 30 insertions(+) diff --git a/csharp/ql/test/library-tests/dataflow/types/Types.cs b/csharp/ql/test/library-tests/dataflow/types/Types.cs index 0ffd2f6f907..cc4d2638ee4 100644 --- a/csharp/ql/test/library-tests/dataflow/types/Types.cs +++ b/csharp/ql/test/library-tests/dataflow/types/Types.cs @@ -152,4 +152,26 @@ class Types { public override void M() => Sink(this.Field); // $ hasValueFlow=line:144 } + + class F + { + public virtual void M() { } + + class F1 : F + { + public override void M() => Sink(this); // $ hasValueFlow=line:167 + } + + class F2 : F { } + + F GetF1() => new F1(); + + F GetF2() => new F2(); + + private void M2() + { + GetF1().M(); + GetF2().M(); + } + } } diff --git a/csharp/ql/test/library-tests/dataflow/types/Types.expected b/csharp/ql/test/library-tests/dataflow/types/Types.expected index fc5e3ed5e6e..76628874c48 100644 --- a/csharp/ql/test/library-tests/dataflow/types/Types.expected +++ b/csharp/ql/test/library-tests/dataflow/types/Types.expected @@ -55,6 +55,9 @@ edges | Types.cs:145:13:145:13 | access to parameter c : FieldC [field Field] : Object | Types.cs:138:21:138:25 | this : FieldC [field Field] : Object | | Types.cs:153:30:153:30 | this : FieldC [field Field] : Object | Types.cs:153:42:153:45 | this access : FieldC [field Field] : Object | | Types.cs:153:42:153:45 | this access : FieldC [field Field] : Object | Types.cs:153:42:153:51 | access to field Field | +| Types.cs:162:34:162:34 | this : Types+F+F1 | Types.cs:162:46:162:49 | this access | +| Types.cs:167:22:167:34 | object creation of type F1 : Types+F+F1 | Types.cs:173:13:173:19 | call to method GetF1 : Types+F+F1 | +| Types.cs:173:13:173:19 | call to method GetF1 : Types+F+F1 | Types.cs:162:34:162:34 | this : Types+F+F1 | nodes | Types.cs:7:21:7:25 | this : D | semmle.label | this : D | | Types.cs:7:32:7:35 | this access : D | semmle.label | this access : D | @@ -124,6 +127,10 @@ nodes | Types.cs:153:30:153:30 | this : FieldC [field Field] : Object | semmle.label | this : FieldC [field Field] : Object | | Types.cs:153:42:153:45 | this access : FieldC [field Field] : Object | semmle.label | this access : FieldC [field Field] : Object | | Types.cs:153:42:153:51 | access to field Field | semmle.label | access to field Field | +| Types.cs:162:34:162:34 | this : Types+F+F1 | semmle.label | this : Types+F+F1 | +| Types.cs:162:46:162:49 | this access | semmle.label | this access | +| Types.cs:167:22:167:34 | object creation of type F1 : Types+F+F1 | semmle.label | object creation of type F1 : Types+F+F1 | +| Types.cs:173:13:173:19 | call to method GetF1 : Types+F+F1 | semmle.label | call to method GetF1 : Types+F+F1 | subpaths | Types.cs:122:30:122:30 | access to local variable a : A | Types.cs:130:34:130:34 | x : A | Types.cs:130:40:130:40 | access to parameter x : A | Types.cs:122:22:122:31 | call to method Through | | Types.cs:123:30:123:31 | access to local variable e2 : Types+E.E2 | Types.cs:130:34:130:34 | x : Types+E.E2 | Types.cs:130:40:130:40 | access to parameter x : Types+E.E2 | Types.cs:123:22:123:32 | call to method Through | @@ -146,3 +153,4 @@ subpaths | Types.cs:120:25:120:31 | object creation of type A : A | Types.cs:120:25:120:31 | object creation of type A : A | Types.cs:122:22:122:31 | call to method Through | $@ | Types.cs:122:22:122:31 | call to method Through | call to method Through | | Types.cs:121:26:121:33 | object creation of type E2 : Types+E.E2 | Types.cs:121:26:121:33 | object creation of type E2 : Types+E.E2 | Types.cs:123:22:123:32 | call to method Through | $@ | Types.cs:123:22:123:32 | call to method Through | call to method Through | | Types.cs:144:23:144:34 | object creation of type Object : Object | Types.cs:144:23:144:34 | object creation of type Object : Object | Types.cs:153:42:153:51 | access to field Field | $@ | Types.cs:153:42:153:51 | access to field Field | access to field Field | +| Types.cs:167:22:167:34 | object creation of type F1 : Types+F+F1 | Types.cs:167:22:167:34 | object creation of type F1 : Types+F+F1 | Types.cs:162:46:162:49 | this access | $@ | Types.cs:162:46:162:49 | this access | this access | From 838a00bbc90464907951569ab144c9d5afdabb45 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 27 Jan 2023 16:45:49 +0000 Subject: [PATCH 055/122] Swift: Add a webview test case from a branch that didn't make it. --- .../dataflow/flowsources/webview.swift | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/swift/ql/test/library-tests/dataflow/flowsources/webview.swift b/swift/ql/test/library-tests/dataflow/flowsources/webview.swift index 6fbc2b69721..1dfa47bb4e0 100644 --- a/swift/ql/test/library-tests/dataflow/flowsources/webview.swift +++ b/swift/ql/test/library-tests/dataflow/flowsources/webview.swift @@ -52,6 +52,7 @@ protocol Exported : JSExport { var tainted: Any { get } func tainted(arg1: Any, arg2: Any) } + class ExportedImpl : Exported { var tainted: Any { get { return "" } } @@ -80,3 +81,22 @@ extension Extended : WKNavigationDelegate { func webView(_: WKWebView, decidePolicyFor: WKNavigationAction, preferences: WKWebpagePreferences, decisionHandler: (WKNavigationActionPolicy, WKWebpagePreferences) -> Void) {} // $ source=remote func webView(_: WKWebView, decidePolicyFor: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {} // $ source=remote } + +// --- + +typealias JSExportAlias = JSExport + +protocol Exported2 : JSExportAlias { + var tainted: Any { get } +} +typealias Exported2Alias = Exported2 + +class ExportedImpl2 : Exported2Alias { + var tainted: Any { get { return "" } } + var notTainted: Any { get { return ""} } + + func readFields() { + tainted // $ source=remote + notTainted + } +} From 68da5e2bbe54417b92b5603047969aeb2642e7a0 Mon Sep 17 00:00:00 2001 From: shati-patel <42641846+shati-patel@users.noreply.github.com> Date: Mon, 6 Nov 2023 10:56:03 +0000 Subject: [PATCH 056/122] Fix some names + a spurious quotation mark --- .../codeql-for-visual-studio-code/customizing-settings.rst | 6 +++--- .../exploring-the-structure-of-your-source-code.rst | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/codeql/codeql-for-visual-studio-code/customizing-settings.rst b/docs/codeql/codeql-for-visual-studio-code/customizing-settings.rst index 9ddc83e2e15..88ad273a3d6 100644 --- a/docs/codeql/codeql-for-visual-studio-code/customizing-settings.rst +++ b/docs/codeql/codeql-for-visual-studio-code/customizing-settings.rst @@ -107,10 +107,10 @@ You can also edit the items shown in the Variant Analysis Repositories panel by You can change the items shown in the panel or add new items by directly editing this file. -Configuring settings for downloading databases +Configuring settings for adding databases ------------------------------------------------ -To automatically add database source folders to your workspace, you can check the **Database Download > Add Database Source to Workspace** setting. +To automatically add database source folders to your workspace, you can enable the **Adding Databases > Add Database Source to Workspace** setting. This setting is disabled by default. You may want to enable the setting if you regularly browse the source code of databases, for example to view the abstract syntax tree of the code. For more information, see ":ref:`Exploring the structure of your source code `." @@ -118,7 +118,7 @@ This setting is disabled by default. You may want to enable the setting if you r If you are in a single-folder workspace, adding database source folders will cause the workspace to reload as a multi-root workspace. This may cause query history and database lists to be reset. - Before enabling this setting, we recommend that you save your workspace as a multi-root workspace. For more information, see ""`Multi-root Workspaces `__" in the Visual Studio Code help. + Before enabling this setting, we recommend that you save your workspace as a multi-root workspace. For more information, see "`Multi-root Workspaces `__" in the Visual Studio Code help. Configuring settings for testing queries locally ------------------------------------------------ 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 4ee016f2e5e..708b2f0cc0c 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 @@ -24,7 +24,7 @@ Viewing the abstract syntax tree of a source file :width: 350 :alt: Add database source to workspace -2. Navigate to a source file from a CodeQL database in the File Explorer. +2. Navigate to a CodeQL database's source file in the File Explorer. .. image:: ../images/codeql-for-visual-studio-code/open-source-file.png :width: 350 From 12cd1c1011c1e39b49c6ad189edddcfeceaec80a Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 6 Nov 2023 09:11:38 +0100 Subject: [PATCH 057/122] C#: Deprecate `UnboundGenericType::getInstanceType/0` --- csharp/ql/lib/semmle/code/csharp/Generics.qll | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/Generics.qll b/csharp/ql/lib/semmle/code/csharp/Generics.qll index 82efe78c96d..fb17ef2c732 100644 --- a/csharp/ql/lib/semmle/code/csharp/Generics.qll +++ b/csharp/ql/lib/semmle/code/csharp/Generics.qll @@ -123,11 +123,13 @@ class UnboundGenericType extends ValueOrRefType, UnboundGeneric { } /** + * DEPRECATED: predicate does not contain any tuples. + * * Gets the instance type of this type. For an unbound generic type, the instance type * is a constructed type created from the unbound type, with each of the supplied type * arguments being the corresponding type parameter. */ - ConstructedType getInstanceType() { + deprecated ConstructedType getInstanceType() { result = this.getAConstructedGeneric() and forall(TypeParameter tp, int i | tp = this.getTypeParameter(i) | tp = result.getTypeArgument(i)) } @@ -277,7 +279,7 @@ class TypeParameterConstraints extends Element, @type_parameter_constraints { * ``` */ class UnboundGenericStruct extends Struct, UnboundGenericType { - override ConstructedStruct getInstanceType() { + deprecated override ConstructedStruct getInstanceType() { result = UnboundGenericType.super.getInstanceType() } @@ -300,7 +302,7 @@ class UnboundGenericStruct extends Struct, UnboundGenericType { * ``` */ class UnboundGenericClass extends Class, UnboundGenericType { - override ConstructedClass getInstanceType() { + deprecated override ConstructedClass getInstanceType() { result = UnboundGenericType.super.getInstanceType() } @@ -323,7 +325,7 @@ class UnboundGenericClass extends Class, UnboundGenericType { * ``` */ class UnboundGenericInterface extends Interface, UnboundGenericType { - override ConstructedInterface getInstanceType() { + deprecated override ConstructedInterface getInstanceType() { result = UnboundGenericType.super.getInstanceType() } @@ -347,7 +349,7 @@ class UnboundGenericInterface extends Interface, UnboundGenericType { * ``` */ class UnboundGenericDelegateType extends DelegateType, UnboundGenericType { - override ConstructedDelegateType getInstanceType() { + deprecated override ConstructedDelegateType getInstanceType() { result = UnboundGenericType.super.getInstanceType() } From 465eb00228bd87020f523fb41dd551a7dc088aaa Mon Sep 17 00:00:00 2001 From: Cornelius Riemenschneider Date: Fri, 3 Nov 2023 11:11:14 +0100 Subject: [PATCH 058/122] More fine-grained dependency on internal extractors. --- javascript/extractor/BUILD.bazel | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/javascript/extractor/BUILD.bazel b/javascript/extractor/BUILD.bazel index 8ad3664e872..3226ee5098e 100644 --- a/javascript/extractor/BUILD.bazel +++ b/javascript/extractor/BUILD.bazel @@ -3,7 +3,8 @@ load("@//:common.bzl", "codeql_java_project") codeql_java_project( name = "extractor", deps = [ - "@//extractor", + "@//extractor:html", + "@//extractor:yaml", "@//resources/lib/java:commons-compress", "@//resources/lib/java:gson", "@//resources/lib/java:jericho-html", From 6c7ea86a127af0c83477ca2430e8ca8d6869a482 Mon Sep 17 00:00:00 2001 From: Cornelius Riemenschneider Date: Fri, 3 Nov 2023 11:14:22 +0100 Subject: [PATCH 059/122] Introduce a bazel-based build for the entire JS pack. --- javascript/BUILD.bazel | 37 +++++++++++++ javascript/downgrades/BUILD.bazel | 11 ++++ javascript/externs/BUILD.bazel | 11 ++++ javascript/extractor/BUILD.bazel | 39 ++++++++++++- .../extractor/lib/typescript/BUILD.bazel | 55 +++++++++++++++++++ 5 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 javascript/downgrades/BUILD.bazel create mode 100644 javascript/externs/BUILD.bazel create mode 100644 javascript/extractor/lib/typescript/BUILD.bazel diff --git a/javascript/BUILD.bazel b/javascript/BUILD.bazel index 7ba94d09634..ce1d8b5578a 100644 --- a/javascript/BUILD.bazel +++ b/javascript/BUILD.bazel @@ -1,3 +1,7 @@ +load("@//:dist.bzl", "dist") +load("@rules_pkg//pkg:mappings.bzl", "pkg_files") +load("@//buildutils-internal:zipmerge.bzl", "zipmerge") + package(default_visibility = ["//visibility:public"]) alias( @@ -9,3 +13,36 @@ alias( name = "dbscheme-stats", actual = "//javascript/ql/lib:dbscheme-stats", ) + +pkg_files( + name = "dbscheme-group", + srcs = [ + ":dbscheme", + ":dbscheme-stats", + ], + strip_prefix = None, +) + +dist( + name = "javascript-extractor-pack", + srcs = [ + ":dbscheme-group", + "//javascript/downgrades", + "//javascript/externs", + "//javascript/extractor:tools-extractor", + "@//language-packs/javascript:resources", + ], + prefix = "javascript", +) + +# We have to zipmerge in the typescript parser wrapper, as it's generated by a genrule +# and we don't know a list of its output files. Therefore, we sidestep the +# rules_pkg tooling here, and generate the zip for the language pack manually. +zipmerge( + name = "javascript", + srcs = [ + ":javascript-extractor-pack.zip", + "//javascript/extractor/lib/typescript", + ], + out = "javascript.zip", +) diff --git a/javascript/downgrades/BUILD.bazel b/javascript/downgrades/BUILD.bazel new file mode 100644 index 00000000000..3e3d9a17d94 --- /dev/null +++ b/javascript/downgrades/BUILD.bazel @@ -0,0 +1,11 @@ +load("@//:dist.bzl", "pack_zip") + +pack_zip( + name = "downgrades", + srcs = glob( + ["**/*"], + exclude = ["BUILD.bazel"], + ), + prefix = "downgrades", + visibility = ["//visibility:public"], +) diff --git a/javascript/externs/BUILD.bazel b/javascript/externs/BUILD.bazel new file mode 100644 index 00000000000..882f90e8d29 --- /dev/null +++ b/javascript/externs/BUILD.bazel @@ -0,0 +1,11 @@ +load("@//:dist.bzl", "pack_zip") + +pack_zip( + name = "externs", + srcs = glob( + ["**/*"], + exclude = ["BUILD.bazel"], + ), + prefix = "tools/data/externs", + visibility = ["//visibility:public"], +) diff --git a/javascript/extractor/BUILD.bazel b/javascript/extractor/BUILD.bazel index 3226ee5098e..49007e93cc9 100644 --- a/javascript/extractor/BUILD.bazel +++ b/javascript/extractor/BUILD.bazel @@ -1,4 +1,5 @@ -load("@//:common.bzl", "codeql_java_project") +load("@//:common.bzl", "codeql_fat_jar", "codeql_java_project") +load("@rules_pkg//pkg:mappings.bzl", "pkg_files") codeql_java_project( name = "extractor", @@ -17,3 +18,39 @@ codeql_java_project( "@//util-java8", ], ) + +pkg_files( + name = "javascript-extractor-resources", + srcs = glob(["resources/**"]), + strip_prefix = "resources", +) + +codeql_fat_jar( + name = "extractor-javascript", + srcs = [ + ":extractor", + "@//extractor:html", + "@//extractor:xml-trap-writer", + "@//extractor:yaml", + "@//resources/lib/java:commons-compress", + "@//resources/lib/java:gson", + "@//resources/lib/java:jericho-html", + "@//resources/lib/java:slf4j-api", + "@//resources/lib/java:snakeyaml", + "@//third_party:jackson", + "@//third_party:logback", + "@//util-java7", + "@//util-java8", + ], + files = [":javascript-extractor-resources"], + main_class = "com.semmle.js.extractor.Main", +) + +pkg_files( + name = "tools-extractor", + srcs = [ + ":extractor-javascript", + ], + prefix = "tools", + visibility = ["//visibility:public"], +) diff --git a/javascript/extractor/lib/typescript/BUILD.bazel b/javascript/extractor/lib/typescript/BUILD.bazel new file mode 100644 index 00000000000..27b3c29e88a --- /dev/null +++ b/javascript/extractor/lib/typescript/BUILD.bazel @@ -0,0 +1,55 @@ +load("@//:common.bzl", "on_windows") + +# Builds a zip file of the compiled typscript-parser-wrapper and its dependencies. +genrule( + name = "typescript", + srcs = [ + "tsconfig.json", + "package.json", + "package-lock.json", + ] + glob(["src/**"]), + outs = ["javascript.zip"], + cmd = " && ".join([ + # the original working directory is not preserved anywhere, but needs to be accessible, as + # all paths are relative to this + # unfortunately, we need to change the working directory to run npm. + "export BAZEL_ROOT=$$(pwd)", + # we need a temp dir, and unfortunately, $TMPDIR is not set on Windows + "export TEMP=$$(mktemp -d)", + # Add node to the path so that npm run can find it - it's calling env node + "export PATH=$$PATH:$$BAZEL_ROOT/$$(dirname $(execpath @nodejs//:node_bin))", + "export NPM=$$BAZEL_ROOT/$(execpath @nodejs//:npm_bin)", + # npm has a global cache which doesn't work on macos, where absolute paths aren't filtered out by the sandbox. + # Therefore, set a temporary cache directory. + "export NPM_CONFIG_USERCONFIG=$$TEMP/npmrc", + "$$NPM config set cache $$TEMP/npm", + "$$NPM config set update-notifier false", + "rm -rf $(RULEDIR)/inputs", + "cp -L -R $$(dirname $(execpath package.json)) $(RULEDIR)/inputs", + "cd $(RULEDIR)/inputs", + "$$NPM install", + "$$NPM run build", + "rm -rf node_modules", + # Install again with only runtime deps + "$$NPM install --prod", + "mv node_modules build/", + "mkdir -p javascript/tools/typescript-parser-wrapper", + "mv build/* javascript/tools/typescript-parser-wrapper", + "", + ]) + on_windows( + " && ".join([ + "$$BAZEL_ROOT/$(execpath @bazel_tools//tools/zip:zipper) cC $$(cygpath -w $$BAZEL_ROOT/$@) $$(find javascript -name '*' -print)", + "rm -rf $$TEMP", + ]), + " && ".join([ + "$$BAZEL_ROOT/$(execpath @bazel_tools//tools/zip:zipper) cC $$BAZEL_ROOT/$@ $$(find javascript -name '*' -print)", + "rm -rf $$TEMP", + ]), + ), + tools = [ + "@bazel_tools//tools/zip:zipper", + "@nodejs//:node_bin", + "@nodejs//:npm_bin", + ], + visibility = ["//visibility:public"], +) From a773532d0710d565ffdc92284ce067935080082c Mon Sep 17 00:00:00 2001 From: Cornelius Riemenschneider Date: Fri, 3 Nov 2023 12:03:32 +0100 Subject: [PATCH 060/122] Refactor JS test suite to be more in line with other Java projects. Therefore, we move the test suite out of the `src` directory. --- javascript/extractor/BUILD.bazel | 15 +++++++++++---- .../js/extractor/test/ASTMatchingTests.java | 0 .../com/semmle/js/extractor/test/AllTests.java | 0 .../semmle/js/extractor/test/AutoBuildTests.java | 0 .../test/com/semmle/js/extractor/test/BUILD.bazel | 0 .../js/extractor/test/ClassPropertiesTests.java | 0 .../semmle/js/extractor/test/DecoratorTests.java | 0 .../js/extractor/test/ExportExtensionsTests.java | 0 .../js/extractor/test/FunctionSentTests.java | 0 .../com/semmle/js/extractor/test/JSXTests.java | 0 .../js/extractor/test/NodeJSDetectorTests.java | 0 .../js/extractor/test/NumericSeparatorTests.java | 0 .../js/extractor/test/ObjectRestSpreadTests.java | 0 .../semmle/js/extractor/test/RobustnessTests.java | 0 .../com/semmle/js/extractor/test/TrapTests.java | 0 15 files changed, 11 insertions(+), 4 deletions(-) rename javascript/extractor/{src => test}/com/semmle/js/extractor/test/ASTMatchingTests.java (100%) rename javascript/extractor/{src => test}/com/semmle/js/extractor/test/AllTests.java (100%) rename javascript/extractor/{src => test}/com/semmle/js/extractor/test/AutoBuildTests.java (100%) create mode 100644 javascript/extractor/test/com/semmle/js/extractor/test/BUILD.bazel rename javascript/extractor/{src => test}/com/semmle/js/extractor/test/ClassPropertiesTests.java (100%) rename javascript/extractor/{src => test}/com/semmle/js/extractor/test/DecoratorTests.java (100%) rename javascript/extractor/{src => test}/com/semmle/js/extractor/test/ExportExtensionsTests.java (100%) rename javascript/extractor/{src => test}/com/semmle/js/extractor/test/FunctionSentTests.java (100%) rename javascript/extractor/{src => test}/com/semmle/js/extractor/test/JSXTests.java (100%) rename javascript/extractor/{src => test}/com/semmle/js/extractor/test/NodeJSDetectorTests.java (100%) rename javascript/extractor/{src => test}/com/semmle/js/extractor/test/NumericSeparatorTests.java (100%) rename javascript/extractor/{src => test}/com/semmle/js/extractor/test/ObjectRestSpreadTests.java (100%) rename javascript/extractor/{src => test}/com/semmle/js/extractor/test/RobustnessTests.java (100%) rename javascript/extractor/{src => test}/com/semmle/js/extractor/test/TrapTests.java (100%) diff --git a/javascript/extractor/BUILD.bazel b/javascript/extractor/BUILD.bazel index 49007e93cc9..96a1288da20 100644 --- a/javascript/extractor/BUILD.bazel +++ b/javascript/extractor/BUILD.bazel @@ -1,9 +1,10 @@ load("@//:common.bzl", "codeql_fat_jar", "codeql_java_project") load("@rules_pkg//pkg:mappings.bzl", "pkg_files") -codeql_java_project( - name = "extractor", - deps = [ +java_library( + name = "deps", + visibility = [":__subpackages__"], + exports = [ "@//extractor:html", "@//extractor:yaml", "@//resources/lib/java:commons-compress", @@ -11,7 +12,6 @@ codeql_java_project( "@//resources/lib/java:jericho-html", "@//resources/lib/java:slf4j-api", "@//resources/lib/java:snakeyaml", - "@//resources/lib/java/DO_NOT_DISTRIBUTE:junit", "@//third_party:jackson", "@//third_party:logback", "@//util-java7", @@ -19,6 +19,13 @@ codeql_java_project( ], ) +codeql_java_project( + name = "extractor", + deps = [ + ":deps", + ], +) + pkg_files( name = "javascript-extractor-resources", srcs = glob(["resources/**"]), diff --git a/javascript/extractor/src/com/semmle/js/extractor/test/ASTMatchingTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/ASTMatchingTests.java similarity index 100% rename from javascript/extractor/src/com/semmle/js/extractor/test/ASTMatchingTests.java rename to javascript/extractor/test/com/semmle/js/extractor/test/ASTMatchingTests.java diff --git a/javascript/extractor/src/com/semmle/js/extractor/test/AllTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/AllTests.java similarity index 100% rename from javascript/extractor/src/com/semmle/js/extractor/test/AllTests.java rename to javascript/extractor/test/com/semmle/js/extractor/test/AllTests.java diff --git a/javascript/extractor/src/com/semmle/js/extractor/test/AutoBuildTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/AutoBuildTests.java similarity index 100% rename from javascript/extractor/src/com/semmle/js/extractor/test/AutoBuildTests.java rename to javascript/extractor/test/com/semmle/js/extractor/test/AutoBuildTests.java diff --git a/javascript/extractor/test/com/semmle/js/extractor/test/BUILD.bazel b/javascript/extractor/test/com/semmle/js/extractor/test/BUILD.bazel new file mode 100644 index 00000000000..e69de29bb2d diff --git a/javascript/extractor/src/com/semmle/js/extractor/test/ClassPropertiesTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/ClassPropertiesTests.java similarity index 100% rename from javascript/extractor/src/com/semmle/js/extractor/test/ClassPropertiesTests.java rename to javascript/extractor/test/com/semmle/js/extractor/test/ClassPropertiesTests.java diff --git a/javascript/extractor/src/com/semmle/js/extractor/test/DecoratorTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/DecoratorTests.java similarity index 100% rename from javascript/extractor/src/com/semmle/js/extractor/test/DecoratorTests.java rename to javascript/extractor/test/com/semmle/js/extractor/test/DecoratorTests.java diff --git a/javascript/extractor/src/com/semmle/js/extractor/test/ExportExtensionsTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/ExportExtensionsTests.java similarity index 100% rename from javascript/extractor/src/com/semmle/js/extractor/test/ExportExtensionsTests.java rename to javascript/extractor/test/com/semmle/js/extractor/test/ExportExtensionsTests.java diff --git a/javascript/extractor/src/com/semmle/js/extractor/test/FunctionSentTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/FunctionSentTests.java similarity index 100% rename from javascript/extractor/src/com/semmle/js/extractor/test/FunctionSentTests.java rename to javascript/extractor/test/com/semmle/js/extractor/test/FunctionSentTests.java diff --git a/javascript/extractor/src/com/semmle/js/extractor/test/JSXTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/JSXTests.java similarity index 100% rename from javascript/extractor/src/com/semmle/js/extractor/test/JSXTests.java rename to javascript/extractor/test/com/semmle/js/extractor/test/JSXTests.java diff --git a/javascript/extractor/src/com/semmle/js/extractor/test/NodeJSDetectorTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/NodeJSDetectorTests.java similarity index 100% rename from javascript/extractor/src/com/semmle/js/extractor/test/NodeJSDetectorTests.java rename to javascript/extractor/test/com/semmle/js/extractor/test/NodeJSDetectorTests.java diff --git a/javascript/extractor/src/com/semmle/js/extractor/test/NumericSeparatorTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/NumericSeparatorTests.java similarity index 100% rename from javascript/extractor/src/com/semmle/js/extractor/test/NumericSeparatorTests.java rename to javascript/extractor/test/com/semmle/js/extractor/test/NumericSeparatorTests.java diff --git a/javascript/extractor/src/com/semmle/js/extractor/test/ObjectRestSpreadTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/ObjectRestSpreadTests.java similarity index 100% rename from javascript/extractor/src/com/semmle/js/extractor/test/ObjectRestSpreadTests.java rename to javascript/extractor/test/com/semmle/js/extractor/test/ObjectRestSpreadTests.java diff --git a/javascript/extractor/src/com/semmle/js/extractor/test/RobustnessTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/RobustnessTests.java similarity index 100% rename from javascript/extractor/src/com/semmle/js/extractor/test/RobustnessTests.java rename to javascript/extractor/test/com/semmle/js/extractor/test/RobustnessTests.java diff --git a/javascript/extractor/src/com/semmle/js/extractor/test/TrapTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/TrapTests.java similarity index 100% rename from javascript/extractor/src/com/semmle/js/extractor/test/TrapTests.java rename to javascript/extractor/test/com/semmle/js/extractor/test/TrapTests.java From 63854e36b4952aafe5490dfc0bfc9f7ad30ffdb8 Mon Sep 17 00:00:00 2001 From: Cornelius Riemenschneider Date: Fri, 3 Nov 2023 14:15:13 +0100 Subject: [PATCH 061/122] Use the TestPaths helper to lookup files. --- .../test/com/semmle/js/extractor/test/ASTMatchingTests.java | 3 ++- .../extractor/test/com/semmle/js/extractor/test/JSXTests.java | 3 ++- .../test/com/semmle/js/extractor/test/RobustnessTests.java | 3 ++- .../extractor/test/com/semmle/js/extractor/test/TrapTests.java | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/javascript/extractor/test/com/semmle/js/extractor/test/ASTMatchingTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/ASTMatchingTests.java index f46c604d17e..b1a29580047 100644 --- a/javascript/extractor/test/com/semmle/js/extractor/test/ASTMatchingTests.java +++ b/javascript/extractor/test/com/semmle/js/extractor/test/ASTMatchingTests.java @@ -12,6 +12,7 @@ import com.semmle.jcorn.SyntaxError; import com.semmle.js.ast.AST2JSON; import com.semmle.js.ast.Program; import com.semmle.util.io.WholeIO; +import com.semmle.util.tests.TestPaths; import java.io.File; import java.util.Iterator; import java.util.Map.Entry; @@ -54,7 +55,7 @@ public abstract class ASTMatchingTests { } } - private static final File BABYLON_BASE = new File("parser-tests/babylon").getAbsoluteFile(); + private static final File BABYLON_BASE = TestPaths.get("parser-tests/babylon").toAbsolutePath().toFile(); protected void babylonTest(String dir) { babylonTest(dir, new Options().esnext(true)); diff --git a/javascript/extractor/test/com/semmle/js/extractor/test/JSXTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/JSXTests.java index 65c660d05b1..b3b7a13fbf1 100644 --- a/javascript/extractor/test/com/semmle/js/extractor/test/JSXTests.java +++ b/javascript/extractor/test/com/semmle/js/extractor/test/JSXTests.java @@ -10,6 +10,7 @@ import com.semmle.js.ast.AST2JSON; import com.semmle.js.ast.Program; import com.semmle.util.files.FileUtil; import com.semmle.util.io.WholeIO; +import com.semmle.util.tests.TestPaths; import java.io.File; import java.util.ArrayList; import java.util.List; @@ -25,7 +26,7 @@ import org.junit.runners.Parameterized.Parameters; */ @RunWith(Parameterized.class) public class JSXTests extends ASTMatchingTests { - private static final File BASE = new File("parser-tests/jcorn-jsx").getAbsoluteFile(); + private static final File BASE = TestPaths.get("parser-tests/jcorn-jsx").toAbsolutePath().toFile(); @Parameters(name = "{0}") public static Iterable tests() { diff --git a/javascript/extractor/test/com/semmle/js/extractor/test/RobustnessTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/RobustnessTests.java index 3bf164af06f..1bc64fc8ffa 100644 --- a/javascript/extractor/test/com/semmle/js/extractor/test/RobustnessTests.java +++ b/javascript/extractor/test/com/semmle/js/extractor/test/RobustnessTests.java @@ -3,6 +3,7 @@ package com.semmle.js.extractor.test; import com.semmle.jcorn.Options; import com.semmle.jcorn.Parser; import com.semmle.util.io.WholeIO; +import com.semmle.util.tests.TestPaths; import java.io.File; import java.nio.charset.StandardCharsets; import org.junit.Test; @@ -11,7 +12,7 @@ public class RobustnessTests { @Test public void letLookheadTest() { - File test = new File("parser-tests/robustness/letLookahead.js"); + File test = TestPaths.get("parser-tests/robustness/letLookahead.js").toFile(); String src = new WholeIO(StandardCharsets.UTF_8.name()).strictread(test); new Parser(new Options(), src, 0).parse(); } diff --git a/javascript/extractor/test/com/semmle/js/extractor/test/TrapTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/TrapTests.java index ae3a28cbc35..5991ac6669a 100644 --- a/javascript/extractor/test/com/semmle/js/extractor/test/TrapTests.java +++ b/javascript/extractor/test/com/semmle/js/extractor/test/TrapTests.java @@ -13,6 +13,7 @@ import com.semmle.util.extraction.ExtractorOutputConfig; import com.semmle.util.io.WholeIO; import com.semmle.util.process.Env; import com.semmle.util.srcarchive.DummySourceArchive; +import com.semmle.util.tests.TestPaths; import com.semmle.util.trap.ITrapWriterFactory; import com.semmle.util.trap.TrapWriter; import com.semmle.util.trap.pathtransformers.ProjectLayoutTransformer; @@ -35,7 +36,7 @@ import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class) public class TrapTests { - private static final File BASE = new File("tests").getAbsoluteFile(); + private static final File BASE = TestPaths.get("tests").toAbsolutePath().toFile(); @Parameters(name = "{0}:{1}") public static Iterable tests() { From 52fcc5f435de4e572744ff5e264a75ec51037f8e Mon Sep 17 00:00:00 2001 From: Cornelius Riemenschneider Date: Fri, 3 Nov 2023 14:04:43 +0100 Subject: [PATCH 062/122] Export test data directories. --- javascript/extractor/parser-tests/BUILD.bazel | 5 +++++ javascript/extractor/tests/BUILD.bazel | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 javascript/extractor/parser-tests/BUILD.bazel create mode 100644 javascript/extractor/tests/BUILD.bazel diff --git a/javascript/extractor/parser-tests/BUILD.bazel b/javascript/extractor/parser-tests/BUILD.bazel new file mode 100644 index 00000000000..b3a59d98eae --- /dev/null +++ b/javascript/extractor/parser-tests/BUILD.bazel @@ -0,0 +1,5 @@ +filegroup( + name = "parser-tests", + srcs = glob(["**/*"]), + visibility = ["//visibility:public"], +) diff --git a/javascript/extractor/tests/BUILD.bazel b/javascript/extractor/tests/BUILD.bazel new file mode 100644 index 00000000000..4f10bc680f4 --- /dev/null +++ b/javascript/extractor/tests/BUILD.bazel @@ -0,0 +1,5 @@ +filegroup( + name = "tests", + srcs = glob(["**/*"]), + visibility = ["//visibility:public"], +) From cd2eec0aa0c8d239af70abc17eef3abe73c1c01d Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 6 Nov 2023 13:23:31 +0000 Subject: [PATCH 063/122] C++: Also override the single-parameter 'isParameterDeref' in 'InParameterDeref'. --- .../code/cpp/models/interfaces/FunctionInputsAndOutputs.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/models/interfaces/FunctionInputsAndOutputs.qll b/cpp/ql/lib/semmle/code/cpp/models/interfaces/FunctionInputsAndOutputs.qll index f80d08dfba7..a4b82ea019f 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/interfaces/FunctionInputsAndOutputs.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/interfaces/FunctionInputsAndOutputs.qll @@ -254,6 +254,8 @@ class InParameterDeref extends FunctionInput, TInParameterDeref { /** Gets the zero-based index of the parameter. */ ParameterIndex getIndex() { result = index } + override predicate isParameterDeref(ParameterIndex i) { index = i } + override predicate isParameterDeref(ParameterIndex i, int indirection) { i = index and indirectionIndex = indirection } From ff30308a2b4152fbef8db451a8559f86e0676184 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 6 Nov 2023 13:57:14 +0000 Subject: [PATCH 064/122] C++: Only the first indirection of the argument should be the remote flow sink. --- cpp/ql/lib/semmle/code/cpp/models/implementations/Send.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Send.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Send.qll index 16047b21183..f3c8226f90a 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Send.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Send.qll @@ -58,7 +58,7 @@ private class Send extends AliasFunction, ArrayFunction, SideEffectFunction, Rem override ParameterIndex getParameterSizeIndex(ParameterIndex i) { i = 1 and result = 2 } override predicate hasRemoteFlowSink(FunctionInput input, string description) { - input.isParameterDeref(1) and description = "buffer sent by " + this.getName() + input.isParameterDeref(1, 1) and description = "buffer sent by " + this.getName() } override predicate hasSocketInput(FunctionInput input) { input.isParameter(0) } From 43f1d092f1d0bff5dc5d95d733d17a7ea9bd8e83 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Mon, 6 Nov 2023 16:04:58 +0100 Subject: [PATCH 065/122] Python: Misc: show that all tests passed in validTest --- python/ql/test/experimental/dataflow/validTest.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/python/ql/test/experimental/dataflow/validTest.py b/python/ql/test/experimental/dataflow/validTest.py index d77290a51e3..929c52e3d58 100644 --- a/python/ql/test/experimental/dataflow/validTest.py +++ b/python/ql/test/experimental/dataflow/validTest.py @@ -84,3 +84,5 @@ if __name__ == "__main__": # The below fails when trying to import modules # check_tests_valid("module-initialization.test") # check_tests_valid("module-initialization.testOnce") + + print("\n🎉 All test passed 🎉") From decbaa9dc76714b3be0d52557f75a79dd36a6535 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Mon, 6 Nov 2023 15:49:16 +0000 Subject: [PATCH 066/122] Docs: Put lists in supported-frameworks.rst in more alphabetical order They were almost alphabetical, but not quite. Python was ordered by category first, and by name within each catogory. I've left it like that, but it would probably be better to be consistent between languages, one way or the other. --- .../codeql/reusables/supported-frameworks.rst | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/codeql/reusables/supported-frameworks.rst b/docs/codeql/reusables/supported-frameworks.rst index 3f39a57cbad..91c413c86af 100644 --- a/docs/codeql/reusables/supported-frameworks.rst +++ b/docs/codeql/reusables/supported-frameworks.rst @@ -11,8 +11,8 @@ and the CodeQL library pack ``codeql/cpp-all`` (`changelog `__, Utility library `Berkeley socket API library `__, Network communicator + `Bloomberg Standard Library `__, Utility library string.h, String library C# built-in support @@ -82,8 +82,8 @@ and the CodeQL library pack ``codeql/go-all`` (`changelog `_, Network communicator `protobuf `_, Serialization `Revel `_, Web framework - `sqlx `_, Database `SendGrid `_, Email library + `sqlx `_, Database `Squirrel `_, Database `ws `_, Network communicator `xmlpath `_, XPath library @@ -108,20 +108,20 @@ and the CodeQL library pack ``codeql/java-all`` (`changelog `__, Cryptography library `SQLite3 `__, Database `SQLite.swift `__, Database - `WebKit `__, User interface library `UIKit `__, User interface library + `WebKit `__, User interface library From 31c2a3be98f42cbdcf64a7901be0bf4b191d6413 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 6 Nov 2023 15:52:58 +0000 Subject: [PATCH 067/122] C++: Don't redefine the meaning of the single-parameter 'isParameterDeref' and accept test changes. --- .../code/cpp/models/interfaces/FunctionInputsAndOutputs.qll | 6 +----- .../dataflow-tests/dataflow-ir-consistency.expected | 4 ---- .../dataflow/fields/dataflow-ir-consistency.expected | 2 -- 3 files changed, 1 insertion(+), 11 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/models/interfaces/FunctionInputsAndOutputs.qll b/cpp/ql/lib/semmle/code/cpp/models/interfaces/FunctionInputsAndOutputs.qll index a4b82ea019f..e7bcd1ec4bd 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/interfaces/FunctionInputsAndOutputs.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/interfaces/FunctionInputsAndOutputs.qll @@ -254,8 +254,6 @@ class InParameterDeref extends FunctionInput, TInParameterDeref { /** Gets the zero-based index of the parameter. */ ParameterIndex getIndex() { result = index } - override predicate isParameterDeref(ParameterIndex i) { index = i } - override predicate isParameterDeref(ParameterIndex i, int indirection) { i = index and indirectionIndex = indirection } @@ -511,10 +509,8 @@ class OutParameterDeref extends FunctionOutput, TOutParameterDeref { ParameterIndex getIndex() { result = index } - override predicate isParameterDeref(ParameterIndex i) { i = index } - override predicate isParameterDeref(ParameterIndex i, int ind) { - this.isParameterDeref(i) and ind = indirectionIndex + i = index and ind = indirectionIndex } } 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 b7b2a8eab90..bacd714e614 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 @@ -20,12 +20,8 @@ reverseRead argHasPostUpdate postWithInFlow | test.cpp:384:10:384:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | -| test.cpp:384:10:384:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | -| test.cpp:391:10:391:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | | test.cpp:391:10:391:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | | test.cpp:400:10:400:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | -| test.cpp:400:10:400:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | -| test.cpp:407:10:407:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | | test.cpp:407:10:407:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | viableImplInCallContextTooLarge uniqueParameterNodeAtPosition diff --git a/cpp/ql/test/library-tests/dataflow/fields/dataflow-ir-consistency.expected b/cpp/ql/test/library-tests/dataflow/fields/dataflow-ir-consistency.expected index 72818427b84..4b74de5a825 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/dataflow-ir-consistency.expected +++ b/cpp/ql/test/library-tests/dataflow/fields/dataflow-ir-consistency.expected @@ -44,8 +44,6 @@ reverseRead argHasPostUpdate postWithInFlow | realistic.cpp:54:16:54:47 | memcpy output argument | PostUpdateNode should not be the target of local flow. | -| realistic.cpp:54:16:54:47 | memcpy output argument | PostUpdateNode should not be the target of local flow. | -| realistic.cpp:60:16:60:18 | memcpy output argument | PostUpdateNode should not be the target of local flow. | | realistic.cpp:60:16:60:18 | memcpy output argument | PostUpdateNode should not be the target of local flow. | viableImplInCallContextTooLarge uniqueParameterNodeAtPosition From 80c4b7357ab25261090be95509b1b13ded56b968 Mon Sep 17 00:00:00 2001 From: Alex Denisov Date: Mon, 6 Nov 2023 16:51:58 +0100 Subject: [PATCH 068/122] Swlft: force canonical type computation before using the type `getCanonicalType` will force computation of the canonical type. Without canonical type computed. `getString` may cause crashes in certain cases. --- swift/extractor/translators/TypeTranslator.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/swift/extractor/translators/TypeTranslator.cpp b/swift/extractor/translators/TypeTranslator.cpp index 4bbebfab588..a4ecfe73afd 100644 --- a/swift/extractor/translators/TypeTranslator.cpp +++ b/swift/extractor/translators/TypeTranslator.cpp @@ -163,8 +163,10 @@ void TypeTranslator::fillAnyGenericType(const swift::AnyGenericType& type, } void TypeTranslator::fillType(const swift::TypeBase& type, codeql::Type& entry) { - entry.name = type.getString(); + // Preserve the order as getCanonicalType() forces computation of the canonical type + // without which getString may crash sometimes entry.canonical_type = dispatcher.fetchLabel(type.getCanonicalType()); + entry.name = type.getString(); } void TypeTranslator::fillArchetypeType(const swift::ArchetypeType& type, ArchetypeType& entry) { From 424046d2385fc67cc6d3f4047484ad3577e25471 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 6 Nov 2023 15:29:10 +0000 Subject: [PATCH 069/122] Swift: Add test case. --- .../Security/CWE-311/SensitiveExprs.expected | 1 + .../Security/CWE-311/testRealm2.swift | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 swift/ql/test/query-tests/Security/CWE-311/testRealm2.swift diff --git a/swift/ql/test/query-tests/Security/CWE-311/SensitiveExprs.expected b/swift/ql/test/query-tests/Security/CWE-311/SensitiveExprs.expected index 62b9243f7e0..ea5a4ed4b59 100644 --- a/swift/ql/test/query-tests/Security/CWE-311/SensitiveExprs.expected +++ b/swift/ql/test/query-tests/Security/CWE-311/SensitiveExprs.expected @@ -138,6 +138,7 @@ | testGRDB.swift:208:81:208:81 | password | label:password, type:credential | | testGRDB.swift:210:85:210:85 | password | label:password, type:credential | | testGRDB.swift:212:99:212:99 | password | label:password, type:credential | +| testRealm2.swift:18:11:18:11 | myPassword | label:myPassword, type:credential | | testRealm.swift:31:20:31:20 | .password | label:password, type:credential | | testRealm.swift:41:11:41:11 | myPassword | label:myPassword, type:credential | | testRealm.swift:49:11:49:11 | myPassword | label:myPassword, type:credential | diff --git a/swift/ql/test/query-tests/Security/CWE-311/testRealm2.swift b/swift/ql/test/query-tests/Security/CWE-311/testRealm2.swift new file mode 100644 index 00000000000..c61a44c9979 --- /dev/null +++ b/swift/ql/test/query-tests/Security/CWE-311/testRealm2.swift @@ -0,0 +1,21 @@ +//codeql-extractor-options: -module-name RealmSwift + +// --- stubs --- + +class Object { +} + +// --- tests --- + +class MyRealmSwiftObject3 : Object { + override init() { data = "" } + + var data: String +} + +func test1(o: MyRealmSwiftObject3, myHarmless: String, myPassword : String) { + // ... + o.data = myPassword // BAD [NOT DETECTED] + o.data = myHarmless + // ... +} From 9ec5e6e35eba2723ffbf78c896ad5d52e1125680 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 6 Nov 2023 14:16:25 +0000 Subject: [PATCH 070/122] Swift: Re-organize the RealmStore constructor. --- .../swift/security/CleartextStorageDatabaseExtensions.qll | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseExtensions.qll b/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseExtensions.qll index cfd9a26ebdb..7ab3f8b0d1d 100644 --- a/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseExtensions.qll +++ b/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseExtensions.qll @@ -66,10 +66,10 @@ private class RealmStore extends CleartextStorageDatabaseSink instanceof DataFlo // any write into a class derived from `RealmSwiftObject` is a sink. For // example in `realmObj.data = sensitive` the post-update node corresponding // with `realmObj.data` is a sink. - exists(NominalType t, Expr e | - t.getUnderlyingType().getABaseType*().getName() = "RealmSwiftObject" and + exists(NominalType t, Type base, Expr e | + base.getName() = "RealmSwiftObject" and this.getPreUpdateNode().asExpr() = e and - e.getFullyConverted().getType() = t and + e.getFullyConverted().getType().getUnderlyingType().getABaseType*() = base and not e.(DeclRefExpr).getDecl() instanceof SelfParamDecl ) } From 77e48f72ec6509ee64c3be504e006c038a75d922 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 6 Nov 2023 14:27:51 +0000 Subject: [PATCH 071/122] Swift: Detect Realm sinks more reliably. --- .../CleartextStorageDatabaseExtensions.qll | 25 ++++++++++++++++--- .../CleartextStorageDatabaseQuery.qll | 6 +++-- .../CWE-311/CleartextStorageDatabase.expected | 13 ++++++++++ .../Security/CWE-311/testRealm2.swift | 2 +- 4 files changed, 40 insertions(+), 6 deletions(-) diff --git a/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseExtensions.qll b/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseExtensions.qll index 7ab3f8b0d1d..70a8d720b40 100644 --- a/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseExtensions.qll +++ b/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseExtensions.qll @@ -57,6 +57,26 @@ private class CoreDataStore extends CleartextStorageDatabaseSink { } } +/** + * The Realm database `RealmSwiftObject` type. Also matches the Realm `Object` + * type, which may or may not be a type alias for `RealmSwiftObject`. + */ +class RealmSwiftObject extends Type { + RealmSwiftObject() { + this.getName() = "RealmSwiftObject" + or + this.getName() = "Object" and + this.(NominalType).getDeclaration().getModule().getName() = "RealmSwift" + } +} + +/** + * A class that inherits from `RealmSwiftObject`. + */ +class RealmSwiftObjectType extends Type { + RealmSwiftObjectType() { this.getUnderlyingType().getABaseType*() instanceof RealmSwiftObject } +} + /** * A `DataFlow::Node` that is an expression stored with the Realm database * library. @@ -66,10 +86,9 @@ private class RealmStore extends CleartextStorageDatabaseSink instanceof DataFlo // any write into a class derived from `RealmSwiftObject` is a sink. For // example in `realmObj.data = sensitive` the post-update node corresponding // with `realmObj.data` is a sink. - exists(NominalType t, Type base, Expr e | - base.getName() = "RealmSwiftObject" and + exists(Expr e | this.getPreUpdateNode().asExpr() = e and - e.getFullyConverted().getType().getUnderlyingType().getABaseType*() = base and + e.getFullyConverted().getType() instanceof RealmSwiftObjectType and not e.(DeclRefExpr).getDecl() instanceof SelfParamDecl ) } diff --git a/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseQuery.qll b/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseQuery.qll index 25f595a8dd2..0f2d28480cd 100644 --- a/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseQuery.qll +++ b/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseQuery.qll @@ -34,8 +34,10 @@ module CleartextStorageDatabaseConfig implements DataFlow::ConfigSig { // for example in `realmObj.data = sensitive`. isSink(node) and exists(NominalTypeDecl d, Decl cx | - d.getType().getUnderlyingType().getABaseType*().getName() = - ["NSManagedObject", "RealmSwiftObject"] and + ( + d.getType().getUnderlyingType().getABaseType*().getName() = "NSManagedObject" or + d.getType() instanceof RealmSwiftObjectType + ) and cx.asNominalTypeDecl() = d and c.getAReadContent().(DataFlow::Content::FieldContent).getField() = cx.getAMember() ) diff --git a/swift/ql/test/query-tests/Security/CWE-311/CleartextStorageDatabase.expected b/swift/ql/test/query-tests/Security/CWE-311/CleartextStorageDatabase.expected index cc14a987c5b..342a4d53ce4 100644 --- a/swift/ql/test/query-tests/Security/CWE-311/CleartextStorageDatabase.expected +++ b/swift/ql/test/query-tests/Security/CWE-311/CleartextStorageDatabase.expected @@ -73,6 +73,7 @@ edges | file://:0:0:0:0 | self | file://:0:0:0:0 | .value2 | | file://:0:0:0:0 | self [value] | file://:0:0:0:0 | .value | | file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [data] | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [data] | | file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [notStoredBankAccountNumber] | | file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [password] | | file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [value] | @@ -288,6 +289,10 @@ edges | testGRDB.swift:210:85:210:85 | password | testGRDB.swift:210:84:210:93 | [...] [Collection element] | | testGRDB.swift:212:98:212:107 | [...] [Collection element] | testGRDB.swift:212:98:212:107 | [...] | | testGRDB.swift:212:99:212:99 | password | testGRDB.swift:212:98:212:107 | [...] [Collection element] | +| testRealm2.swift:13:6:13:6 | value | file://:0:0:0:0 | value | +| testRealm2.swift:18:2:18:2 | [post] o [data] | testRealm2.swift:18:2:18:2 | [post] o | +| testRealm2.swift:18:11:18:11 | myPassword | testRealm2.swift:13:6:13:6 | value | +| testRealm2.swift:18:11:18:11 | myPassword | testRealm2.swift:18:2:18:2 | [post] o [data] | | testRealm.swift:27:6:27:6 | value | file://:0:0:0:0 | value | | testRealm.swift:34:6:34:6 | value | file://:0:0:0:0 | value | | testRealm.swift:41:2:41:2 | [post] a [data] | testRealm.swift:41:2:41:2 | [post] a | @@ -405,6 +410,7 @@ nodes | file://:0:0:0:0 | .value | semmle.label | .value | | file://:0:0:0:0 | .value2 | semmle.label | .value2 | | file://:0:0:0:0 | [post] self [data] | semmle.label | [post] self [data] | +| file://:0:0:0:0 | [post] self [data] | semmle.label | [post] self [data] | | file://:0:0:0:0 | [post] self [notStoredBankAccountNumber] | semmle.label | [post] self [notStoredBankAccountNumber] | | file://:0:0:0:0 | [post] self [password] | semmle.label | [post] self [password] | | file://:0:0:0:0 | [post] self [value] | semmle.label | [post] self [value] | @@ -415,6 +421,7 @@ nodes | file://:0:0:0:0 | value | semmle.label | value | | file://:0:0:0:0 | value | semmle.label | value | | file://:0:0:0:0 | value | semmle.label | value | +| file://:0:0:0:0 | value | semmle.label | value | | sqlite3_c_api.swift:42:69:42:69 | medicalNotes | semmle.label | medicalNotes | | sqlite3_c_api.swift:43:49:43:49 | medicalNotes | semmle.label | medicalNotes | | sqlite3_c_api.swift:46:27:46:27 | insertQuery | semmle.label | insertQuery | @@ -701,6 +708,10 @@ nodes | testGRDB.swift:212:98:212:107 | [...] | semmle.label | [...] | | testGRDB.swift:212:98:212:107 | [...] [Collection element] | semmle.label | [...] [Collection element] | | testGRDB.swift:212:99:212:99 | password | semmle.label | password | +| testRealm2.swift:13:6:13:6 | value | semmle.label | value | +| testRealm2.swift:18:2:18:2 | [post] o | semmle.label | [post] o | +| testRealm2.swift:18:2:18:2 | [post] o [data] | semmle.label | [post] o [data] | +| testRealm2.swift:18:11:18:11 | myPassword | semmle.label | myPassword | | testRealm.swift:27:6:27:6 | value | semmle.label | value | | testRealm.swift:34:6:34:6 | value | semmle.label | value | | testRealm.swift:41:2:41:2 | [post] a | semmle.label | [post] a | @@ -733,6 +744,7 @@ subpaths | testCoreData2.swift:98:18:98:18 | d [value] | testCoreData2.swift:70:9:70:9 | self [value] | file://:0:0:0:0 | .value | testCoreData2.swift:98:18:98:20 | .value | | testCoreData2.swift:104:18:104:18 | e | testCoreData2.swift:70:9:70:9 | self | file://:0:0:0:0 | .value | testCoreData2.swift:104:18:104:20 | .value | | testCoreData2.swift:105:18:105:18 | e | testCoreData2.swift:71:9:71:9 | self | file://:0:0:0:0 | .value2 | testCoreData2.swift:105:18:105:20 | .value2 | +| testRealm2.swift:18:11:18:11 | myPassword | testRealm2.swift:13:6:13:6 | value | file://:0:0:0:0 | [post] self [data] | testRealm2.swift:18:2:18:2 | [post] o [data] | | testRealm.swift:41:11:41:11 | myPassword | testRealm.swift:27:6:27:6 | value | file://:0:0:0:0 | [post] self [data] | testRealm.swift:41:2:41:2 | [post] a [data] | | testRealm.swift:49:11:49:11 | myPassword | testRealm.swift:27:6:27:6 | value | file://:0:0:0:0 | [post] self [data] | testRealm.swift:49:2:49:2 | [post] c [data] | | testRealm.swift:59:12:59:12 | myPassword | testRealm.swift:27:6:27:6 | value | file://:0:0:0:0 | [post] self [data] | testRealm.swift:59:2:59:3 | [post] ...! [data] | @@ -864,6 +876,7 @@ subpaths | testGRDB.swift:208:80:208:89 | [...] | testGRDB.swift:208:81:208:81 | password | testGRDB.swift:208:80:208:89 | [...] | This operation stores '[...]' in a database. It may contain unencrypted sensitive data from $@. | testGRDB.swift:208:81:208:81 | password | password | | testGRDB.swift:210:84:210:93 | [...] | testGRDB.swift:210:85:210:85 | password | testGRDB.swift:210:84:210:93 | [...] | This operation stores '[...]' in a database. It may contain unencrypted sensitive data from $@. | testGRDB.swift:210:85:210:85 | password | password | | testGRDB.swift:212:98:212:107 | [...] | testGRDB.swift:212:99:212:99 | password | testGRDB.swift:212:98:212:107 | [...] | This operation stores '[...]' in a database. It may contain unencrypted sensitive data from $@. | testGRDB.swift:212:99:212:99 | password | password | +| testRealm2.swift:18:2:18:2 | o | testRealm2.swift:18:11:18:11 | myPassword | testRealm2.swift:18:2:18:2 | [post] o | This operation stores 'o' in a database. It may contain unencrypted sensitive data from $@. | testRealm2.swift:18:11:18:11 | myPassword | myPassword | | testRealm.swift:41:2:41:2 | a | testRealm.swift:41:11:41:11 | myPassword | testRealm.swift:41:2:41:2 | [post] a | This operation stores 'a' in a database. It may contain unencrypted sensitive data from $@. | testRealm.swift:41:11:41:11 | myPassword | myPassword | | testRealm.swift:49:2:49:2 | c | testRealm.swift:49:11:49:11 | myPassword | testRealm.swift:49:2:49:2 | [post] c | This operation stores 'c' in a database. It may contain unencrypted sensitive data from $@. | testRealm.swift:49:11:49:11 | myPassword | myPassword | | testRealm.swift:59:2:59:3 | ...! | testRealm.swift:59:12:59:12 | myPassword | testRealm.swift:59:2:59:3 | [post] ...! | This operation stores '...!' in a database. It may contain unencrypted sensitive data from $@. | testRealm.swift:59:12:59:12 | myPassword | myPassword | diff --git a/swift/ql/test/query-tests/Security/CWE-311/testRealm2.swift b/swift/ql/test/query-tests/Security/CWE-311/testRealm2.swift index c61a44c9979..2c1850ee620 100644 --- a/swift/ql/test/query-tests/Security/CWE-311/testRealm2.swift +++ b/swift/ql/test/query-tests/Security/CWE-311/testRealm2.swift @@ -15,7 +15,7 @@ class MyRealmSwiftObject3 : Object { func test1(o: MyRealmSwiftObject3, myHarmless: String, myPassword : String) { // ... - o.data = myPassword // BAD [NOT DETECTED] + o.data = myPassword // BAD o.data = myHarmless // ... } From e4f6b1ac27bc07be73413ceec7fc8e93fb478345 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 6 Nov 2023 16:00:22 +0000 Subject: [PATCH 072/122] Swift: Change note. --- swift/ql/src/change-notes/2023-11-06-realm.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 swift/ql/src/change-notes/2023-11-06-realm.md diff --git a/swift/ql/src/change-notes/2023-11-06-realm.md b/swift/ql/src/change-notes/2023-11-06-realm.md new file mode 100644 index 00000000000..53f4cc7fddd --- /dev/null +++ b/swift/ql/src/change-notes/2023-11-06-realm.md @@ -0,0 +1,5 @@ +--- +category: minorAnalysis +--- + +* Fixed an issue where some Realm database sinks were not being recognized for the `swift/cleartext-storage-database` query. From d544f477468c43ec8709017b8ef65a2f413372dd Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 6 Nov 2023 16:01:59 +0000 Subject: [PATCH 073/122] C++: Simplify the definition of 'SemExpr' by instead making non-overflowing conversions copy value expressions. --- .../rangeanalysis/new/SimpleRangeAnalysis.qll | 4 +- .../new/internal/semantic/SemanticExpr.qll | 16 ++- .../semantic/SemanticExprSpecific.qll | 97 ++----------------- 3 files changed, 27 insertions(+), 90 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/SimpleRangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/SimpleRangeAnalysis.qll index 3716625656c..dc5e1a25f0e 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/SimpleRangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/SimpleRangeAnalysis.qll @@ -100,7 +100,7 @@ predicate exprMightOverflowNegatively(Expr expr) { lowerBound(expr) < exprMinVal(expr) or exists(SemanticExprConfig::Expr semExpr | - semExpr.getUnconverted().getAst() = expr and + semExpr.getAst() = expr and ConstantStage::potentiallyOverflowingExpr(false, semExpr) and not ConstantStage::initialBounded(semExpr, _, _, false, _, _, _) ) @@ -126,7 +126,7 @@ predicate exprMightOverflowPositively(Expr expr) { upperBound(expr) > exprMaxVal(expr) or exists(SemanticExprConfig::Expr semExpr | - semExpr.getUnconverted().getAst() = expr and + semExpr.getAst() = expr and ConstantStage::potentiallyOverflowingExpr(true, semExpr) and not ConstantStage::initialBounded(semExpr, _, _, true, _, _, _) ) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExpr.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExpr.qll index 46a5c735ca0..a2905e185f1 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExpr.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExpr.qll @@ -4,6 +4,7 @@ private import Semantic private import SemanticExprSpecific::SemanticExprConfig as Specific +private import SemanticType /** * An language-neutral expression. @@ -241,8 +242,21 @@ class SemConvertExpr extends SemUnaryExpr { SemConvertExpr() { opcode instanceof Opcode::Convert } } +private import semmle.code.cpp.ir.IR as IR + +/** A conversion instruction which is guaranteed to not overflow. */ +private class SafeConversion extends IR::ConvertInstruction { + SafeConversion() { + exists(SemType tFrom, SemType tTo | + tFrom = getSemanticType(super.getUnary().getResultIRType()) and + tTo = getSemanticType(super.getResultIRType()) and + conversionCannotOverflow(tFrom, tTo) + ) + } +} + class SemCopyValueExpr extends SemUnaryExpr { - SemCopyValueExpr() { opcode instanceof Opcode::CopyValue } + SemCopyValueExpr() { opcode instanceof Opcode::CopyValue or this instanceof SafeConversion } } class SemNegateExpr extends SemUnaryExpr { diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExprSpecific.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExprSpecific.qll index a92361ece17..65e3955ca16 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExprSpecific.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExprSpecific.qll @@ -12,87 +12,10 @@ private import semmle.code.cpp.ir.ValueNumbering module SemanticExprConfig { class Location = Cpp::Location; - /** A `ConvertInstruction` or a `CopyValueInstruction`. */ - private class Conversion extends IR::UnaryInstruction { - Conversion() { - this instanceof IR::CopyValueInstruction - or - this instanceof IR::ConvertInstruction - } - - /** Holds if this instruction converts a value of type `tFrom` to a value of type `tTo`. */ - predicate converts(SemType tFrom, SemType tTo) { - tFrom = getSemanticType(this.getUnary().getResultIRType()) and - tTo = getSemanticType(this.getResultIRType()) - } - } - - /** - * Gets a conversion-like instruction that consumes `op`, and - * which is guaranteed to not overflow. - */ - private IR::Instruction safeConversion(IR::Operand op) { - exists(Conversion conv, SemType tFrom, SemType tTo | - conv.converts(tFrom, tTo) and - conversionCannotOverflow(tFrom, tTo) and - conv.getUnaryOperand() = op and - result = conv - ) - } - - /** Holds if `i1 = i2` or if `i2` is a safe conversion that consumes `i1`. */ - private predicate idOrSafeConversion(IR::Instruction i1, IR::Instruction i2) { - not i1.getResultIRType() instanceof IR::IRVoidType and - ( - i1 = i2 - or - i2 = safeConversion(i1.getAUse()) and - i1.getBlock() = i2.getBlock() - ) - } - - module Equiv = QlBuiltins::EquivalenceRelation; - /** * The expressions on which we perform range analysis. */ - class Expr extends Equiv::EquivalenceClass { - /** Gets the n'th instruction in this equivalence class. */ - private IR::Instruction getInstruction(int n) { - result = - rank[n + 1](IR::Instruction instr, int i, IR::IRBlock block | - this = Equiv::getEquivalenceClass(instr) and block.getInstruction(i) = instr - | - instr order by i - ) - } - - /** Gets a textual representation of this element. */ - string toString() { result = this.getUnconverted().toString() } - - /** Gets the basic block of this expression. */ - IR::IRBlock getBlock() { result = this.getUnconverted().getBlock() } - - /** Gets the unconverted instruction associated with this expression. */ - IR::Instruction getUnconverted() { result = this.getInstruction(0) } - - /** - * Gets the final instruction associated with this expression. This - * represents the result after applying all the safe conversions. - */ - IR::Instruction getConverted() { - exists(int n | - result = this.getInstruction(n) and - not exists(this.getInstruction(n + 1)) - ) - } - - /** Gets the type of the result produced by this instruction. */ - IR::IRType getResultIRType() { result = this.getConverted().getResultIRType() } - - /** Gets the location of the source code for this expression. */ - Location getLocation() { result = this.getUnconverted().getLocation() } - } + class Expr = IR::Instruction; SemBasicBlock getExprBasicBlock(Expr e) { result = getSemanticBasicBlock(e.getBlock()) } @@ -139,12 +62,12 @@ module SemanticExprConfig { predicate stringLiteral(Expr expr, SemType type, string value) { anyConstantExpr(expr, type, value) and - expr.getUnconverted() instanceof IR::StringConstantInstruction + expr instanceof IR::StringConstantInstruction } predicate binaryExpr(Expr expr, Opcode opcode, SemType type, Expr leftOperand, Expr rightOperand) { exists(IR::BinaryInstruction instr | - instr = expr.getUnconverted() and + instr = expr and type = getSemanticType(instr.getResultIRType()) and leftOperand = getSemanticExpr(instr.getLeft()) and rightOperand = getSemanticExpr(instr.getRight()) and @@ -154,14 +77,14 @@ module SemanticExprConfig { } predicate unaryExpr(Expr expr, Opcode opcode, SemType type, Expr operand) { - exists(IR::UnaryInstruction instr | instr = expr.getUnconverted() | + exists(IR::UnaryInstruction instr | instr = expr | type = getSemanticType(instr.getResultIRType()) and operand = getSemanticExpr(instr.getUnary()) and // REVIEW: Merge the two operand types. opcode.toString() = instr.getOpcode().toString() ) or - exists(IR::StoreInstruction instr | instr = expr.getUnconverted() | + exists(IR::StoreInstruction instr | instr = expr | type = getSemanticType(instr.getResultIRType()) and operand = getSemanticExpr(instr.getSourceValue()) and opcode instanceof Opcode::Store @@ -170,13 +93,13 @@ module SemanticExprConfig { predicate nullaryExpr(Expr expr, Opcode opcode, SemType type) { exists(IR::LoadInstruction load | - load = expr.getUnconverted() and + load = expr and type = getSemanticType(load.getResultIRType()) and opcode instanceof Opcode::Load ) or exists(IR::InitializeParameterInstruction init | - init = expr.getUnconverted() and + init = expr and type = getSemanticType(init.getResultIRType()) and opcode instanceof Opcode::InitializeParameter ) @@ -290,9 +213,9 @@ module SemanticExprConfig { } Expr getAUse(SsaVariable v) { - result.getUnconverted().(IR::LoadInstruction).getSourceValue() = v.asInstruction() + result.(IR::LoadInstruction).getSourceValue() = v.asInstruction() or - result.getUnconverted() = v.asPointerArithGuard().getAnInstruction() + result = v.asPointerArithGuard().getAnInstruction() } SemType getSsaVariableType(SsaVariable v) { @@ -433,7 +356,7 @@ module SemanticExprConfig { } /** Gets the expression associated with `instr`. */ - SemExpr getSemanticExpr(IR::Instruction instr) { result = Equiv::getEquivalenceClass(instr) } + SemExpr getSemanticExpr(IR::Instruction instr) { result = instr } } predicate getSemanticExpr = SemanticExprConfig::getSemanticExpr/1; From e91987b1a9c56ee94dc1a8c918ee58be9a22fa48 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 6 Nov 2023 16:02:06 +0000 Subject: [PATCH 074/122] C++: Accept test changes. --- .../range-analysis/SimpleRangeAnalysis_tests.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp b/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp index 73ba7b75d95..7b359a046d8 100644 --- a/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp +++ b/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp @@ -18,7 +18,7 @@ int test2(struct List* p) { int count = 0; for (; p; p = p->next) { count = (count+1) % 10; - range(count); // $ range=<=9 range=>=-9 range="<=Phi: p | Store: count+1" + range(count); // $ range=<=9 range=>=-9 } range(count); // $ range=>=-9 range=<=9 return count; @@ -29,7 +29,7 @@ int test3(struct List* p) { for (; p; p = p->next) { range(count++); // $ range=>=-9 range=<=9 count = count % 10; - range(count); // $ range=<=9 range=>=-9 range="<=Store: ... +++0" range="<=Phi: p | Store: count+1" + range(count); // $ range=<=9 range=>=-9 } range(count); // $ range=>=-9 range=<=9 return count; @@ -317,7 +317,7 @@ int test_mult01(int a, int b) { range(b); // $ range=<=23 range=>=-13 int r = a*b; // $ overflow=+- -143 .. 253 range(r); - total += r; // $ overflow=+ + total += r; // $ overflow=+- range(total); // $ MISSING: range=">=... * ...+0" } if (3 <= a && a <= 11 && -13 <= b && b <= 0) { @@ -365,7 +365,7 @@ int test_mult02(int a, int b) { range(b); // $ range=<=23 range=>=-13 int r = a*b; // $ overflow=+- -143 .. 253 range(r); - total += r; // $ overflow=+ + total += r; // $ overflow=+- range(total); // $ MISSING: range=">=... * ...+0" } if (0 <= a && a <= 11 && -13 <= b && b <= 0) { @@ -460,7 +460,7 @@ int test_mult04(int a, int b) { range(b); // $ range=<=23 range=>=-13 int r = a*b; // $ overflow=+- -391 .. 221 range(r); - total += r; // $ overflow=- + total += r; // $ overflow=+- range(total); // $ MISSING: range="<=... * ...+0" } if (-17 <= a && a <= 0 && -13 <= b && b <= 0) { @@ -508,7 +508,7 @@ int test_mult05(int a, int b) { range(b); // $ range=<=23 range=>=-13 int r = a*b; // $ overflow=+- -391 .. 221 range(r); - total += r; // $ overflow=- + total += r; // $ overflow=+- range(total); // $ MISSING: range="<=... * ...+0" } if (-17 <= a && a <= -2 && -13 <= b && b <= 0) { @@ -974,7 +974,7 @@ void test_mod_neg(int s) { void test_mod_ternary(int s, bool b) { int s2 = s % (b ? 5 : 500); - range(s2); // $ range=>=-499 range=<=499 range="<=Phi: ... ? ... : ...-1" + range(s2); // $ range=>=-499 range=<=499 } void test_mod_ternary2(int s, bool b1, bool b2) { From d38fa13299c6971302a5137f871c053713e0f584 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 6 Nov 2023 16:11:55 +0000 Subject: [PATCH 075/122] C++: Remove more uses of 'getConverted' and 'getUnconverted'. --- .../semmle/code/cpp/rangeanalysis/new/RangeAnalysis.qll | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/RangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/RangeAnalysis.qll index 9a7e390082a..6bd7615d37b 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/RangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/RangeAnalysis.qll @@ -17,9 +17,7 @@ private import semmle.code.cpp.valuenumbering.GlobalValueNumbering * `upper` is true, and can be traced back to a guard represented by `reason`. */ predicate bounded(Expr e, Bound b, float delta, boolean upper, Reason reason) { - exists(SemanticExprConfig::Expr semExpr | - semExpr.getUnconverted().getUnconvertedResultExpression() = e - | + exists(SemanticExprConfig::Expr semExpr | semExpr.getUnconvertedResultExpression() = e | semBounded(semExpr, b, delta, upper, reason) ) } @@ -30,9 +28,7 @@ predicate bounded(Expr e, Bound b, float delta, boolean upper, Reason reason) { * The `Expr` may be a conversion. */ predicate convertedBounded(Expr e, Bound b, float delta, boolean upper, Reason reason) { - exists(SemanticExprConfig::Expr semExpr | - semExpr.getConverted().getConvertedResultExpression() = e - | + exists(SemanticExprConfig::Expr semExpr | semExpr.getConvertedResultExpression() = e | semBounded(semExpr, b, delta, upper, reason) ) } From 426bdc001138630a106e9e8f7b884c2f879a1425 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 6 Nov 2023 16:27:20 +0000 Subject: [PATCH 076/122] Swift: Add test cases. Before the changes, we don't catch the cases for return values from the closures. --- .../dataflow/taint/libraries/files.swift | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/swift/ql/test/library-tests/dataflow/taint/libraries/files.swift b/swift/ql/test/library-tests/dataflow/taint/libraries/files.swift index f4c40a08a85..7a65a2d10f6 100644 --- a/swift/ql/test/library-tests/dataflow/taint/libraries/files.swift +++ b/swift/ql/test/library-tests/dataflow/taint/libraries/files.swift @@ -94,7 +94,6 @@ func sourceString() -> String { return "" } func sourceCCharArray() -> [CChar] { return [] } func sourceCString() -> UnsafePointer { return (nil as UnsafePointer?)! } func sourceDecoder() -> Decoder { return (nil as Decoder?)! } - func sink(filePath: FilePath) { } func sink(string: String) { } func sink(component: FilePath.Component) { } @@ -102,6 +101,7 @@ func sink(root: FilePath.Root) { } func sink(componentView: FilePath.ComponentView) { } func sink(encoder: Encoder) { } func sink(ptr: UnsafePointer) { } +func sink(arg: T) { } func test_files(e1: Encoder) { // --- FilePath.Root, FilePath.Component --- @@ -148,39 +148,51 @@ func test_files(e1: Encoder) { sink(filePath: tainted.lexicallyResolving(clean)!) // $ tainted=133 sink(filePath: clean.lexicallyResolving(tainted)!) // $ tainted=133 - let _ = clean.withCString({ + let result1 = clean.withCString({ ptr in sink(ptr: ptr) + sink(arg: ptr[0]) + return sourceString() }) - let _ = tainted.withCString({ + sink(string: result1) // $ tainted=155 + let result2 = tainted.withCString({ ptr in sink(ptr: ptr) // $ tainted=133 + sink(arg: ptr[0]) // $ tainted=133 + return "" }) + sink(string: result2) - let _ = clean.withPlatformString({ + let result3 = clean.withPlatformString({ ptr in sink(ptr: ptr) + sink(arg: ptr[0]) sink(string: String(platformString: ptr)) sink(string: String(validatingPlatformString: ptr)!) + return sourceString() }) - let _ = tainted.withPlatformString({ + sink(string: result3) // $ tainted=172 + let result4 = tainted.withPlatformString({ ptr in sink(ptr: ptr) // $ tainted=133 + sink(arg: ptr[0]) // $ tainted=133 sink(string: String(platformString: ptr)) // $ tainted=133 sink(string: String(validatingPlatformString: ptr)!) // $ tainted=133 + return "" }) + sink(string: result4) var fp1 = FilePath("") sink(filePath: fp1) fp1.append(sourceString()) - sink(filePath: fp1) // $ tainted=175 + sink(filePath: fp1) // $ tainted=187 fp1.append("") - sink(filePath: fp1) // $ tainted=175 + sink(filePath: fp1) // $ tainted=187 sink(filePath: clean.appending("")) - sink(filePath: clean.appending(sourceString())) // $ tainted=181 + sink(filePath: clean.appending(sourceString())) // $ tainted=193 sink(filePath: tainted.appending("")) // $ tainted=133 - sink(filePath: tainted.appending(sourceString())) // $ tainted=133 tainted=183 + sink(filePath: tainted.appending(sourceString())) // $ tainted=133 tainted=195 // --- FilePath member variables --- From be02512dfed5c982f266ae7247af0d99a5782cc8 Mon Sep 17 00:00:00 2001 From: Cornelius Riemenschneider Date: Fri, 3 Nov 2023 14:20:07 +0100 Subject: [PATCH 077/122] Add a build system for the junit tests. This is a bit more complicated than our usual setup, as we both need to unzip the typescript parser wrapper, and make node accessible on the path. --- .../js/extractor/test/AutoBuildTests.java | 5 +++ .../com/semmle/js/extractor/test/BUILD.bazel | 33 +++++++++++++++++++ .../com/semmle/js/extractor/test/run_tests.sh | 31 +++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100755 javascript/extractor/test/com/semmle/js/extractor/test/run_tests.sh diff --git a/javascript/extractor/test/com/semmle/js/extractor/test/AutoBuildTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/AutoBuildTests.java index 7c60a05d33f..46285275fb1 100644 --- a/javascript/extractor/test/com/semmle/js/extractor/test/AutoBuildTests.java +++ b/javascript/extractor/test/com/semmle/js/extractor/test/AutoBuildTests.java @@ -30,6 +30,7 @@ import com.semmle.js.extractor.FileExtractor; import com.semmle.js.extractor.FileExtractor.FileType; import com.semmle.js.extractor.VirtualSourceRoot; import com.semmle.util.data.StringUtil; +import com.semmle.util.exception.Exceptions; import com.semmle.util.exception.UserError; import com.semmle.util.files.FileUtil; import com.semmle.util.files.FileUtil8; @@ -443,8 +444,12 @@ public class AutoBuildTests { /** Hide {@code p} on using {@link DosFileAttributeView} if available; otherwise do nothing. */ private void hide(Path p) throws IOException { + try { DosFileAttributeView attrs = Files.getFileAttributeView(p, DosFileAttributeView.class); if (attrs != null) attrs.setHidden(true); + } catch (IOException e) { + Exceptions.ignore(e, "On Linux within the bazel sandbox, we get a DosFileAttributeView that then throws an exception upon use"); + } } @Test diff --git a/javascript/extractor/test/com/semmle/js/extractor/test/BUILD.bazel b/javascript/extractor/test/com/semmle/js/extractor/test/BUILD.bazel index e69de29bb2d..57305838039 100644 --- a/javascript/extractor/test/com/semmle/js/extractor/test/BUILD.bazel +++ b/javascript/extractor/test/com/semmle/js/extractor/test/BUILD.bazel @@ -0,0 +1,33 @@ +java_test( + name = "test_jar", + srcs = glob(["**/*.java"]), + test_class = "com.semmle.js.extractor.test.AllTests", + deps = [ + "//javascript/extractor", + "//javascript/extractor:deps", + "@//resources/lib/java/DO_NOT_DISTRIBUTE:junit", + ], +) + +# We need to unzip the typescript wrapper, and provide node on the path. +# Therefore, we're wrapping the java_test inside a sh_test. +sh_test( + name = "test", + size = "small", + srcs = ["run_tests.sh"], + args = [ + "$(execpath @nodejs//:node_bin)", + "$(JAVABASE)/bin/java", + "$(rootpath //javascript/extractor/lib/typescript)", + "$(rootpath test_jar_deploy.jar)", + ], + data = [ + ":test_jar_deploy.jar", + "//javascript/extractor/lib/typescript", + "//javascript/extractor/parser-tests", + "//javascript/extractor/tests", + "@bazel_tools//tools/jdk:current_java_runtime", + "@nodejs//:node_bin", + ], + toolchains = ["@bazel_tools//tools/jdk:current_java_runtime"], +) diff --git a/javascript/extractor/test/com/semmle/js/extractor/test/run_tests.sh b/javascript/extractor/test/com/semmle/js/extractor/test/run_tests.sh new file mode 100755 index 00000000000..bf208739222 --- /dev/null +++ b/javascript/extractor/test/com/semmle/js/extractor/test/run_tests.sh @@ -0,0 +1,31 @@ +NODE=$1 +JAVA=$2 +PARSER_WRAPPER=$3 +TEST_JAR=$4 + +TEMP=$(mktemp -d) + +UNAME=$(uname -s) +echo $UNAME +# On Windows, the symlink set up by bazel that points at the test jar is a msys2/linux-style path +# The JVM can't resolve that, therefore copy the jar to the temp directory, and then set the +# windows path to it +if [[ "$UNAME" =~ _NT ]]; then + cp $TEST_JAR $TEMP/test.jar + TEST_JAR=$(cygpath -w $TEMP/test.jar) + echo "On Windows, new test jar: $TEST_JAR" +fi + +# unpack parser wrapper +unzip -q $PARSER_WRAPPER -d $TEMP/parser_wrapper +export SEMMLE_TYPESCRIPT_PARSER_WRAPPER=$TEMP/parser_wrapper/javascript/tools/typescript-parser-wrapper/main.js + +# setup node on path +NODE=$(realpath $NODE) +export PATH="$PATH:$(dirname $NODE)" + +$JAVA -Dbazel.test_suite=com.semmle.js.extractor.test.AllTests -jar $TEST_JAR +EXIT_CODE=$? + +rm -rf $TEMP +exit $EXIT_CODE From 127f81976249f8078c6d49913a8623a0e2a20002 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 6 Nov 2023 17:23:28 +0000 Subject: [PATCH 078/122] Swift: Move command injection query out from experimental. --- .../Security/CWE-078/CommandInjection.qhelp | 0 .../Security/CWE-078/CommandInjection.ql | 0 .../Security/CWE-078/CommandInjectionBad.swift | 0 .../Security/CWE-078/CommandInjectionGood.swift | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename swift/ql/src/{experimental => queries}/Security/CWE-078/CommandInjection.qhelp (100%) rename swift/ql/src/{experimental => queries}/Security/CWE-078/CommandInjection.ql (100%) rename swift/ql/src/{experimental => queries}/Security/CWE-078/CommandInjectionBad.swift (100%) rename swift/ql/src/{experimental => queries}/Security/CWE-078/CommandInjectionGood.swift (100%) diff --git a/swift/ql/src/experimental/Security/CWE-078/CommandInjection.qhelp b/swift/ql/src/queries/Security/CWE-078/CommandInjection.qhelp similarity index 100% rename from swift/ql/src/experimental/Security/CWE-078/CommandInjection.qhelp rename to swift/ql/src/queries/Security/CWE-078/CommandInjection.qhelp diff --git a/swift/ql/src/experimental/Security/CWE-078/CommandInjection.ql b/swift/ql/src/queries/Security/CWE-078/CommandInjection.ql similarity index 100% rename from swift/ql/src/experimental/Security/CWE-078/CommandInjection.ql rename to swift/ql/src/queries/Security/CWE-078/CommandInjection.ql diff --git a/swift/ql/src/experimental/Security/CWE-078/CommandInjectionBad.swift b/swift/ql/src/queries/Security/CWE-078/CommandInjectionBad.swift similarity index 100% rename from swift/ql/src/experimental/Security/CWE-078/CommandInjectionBad.swift rename to swift/ql/src/queries/Security/CWE-078/CommandInjectionBad.swift diff --git a/swift/ql/src/experimental/Security/CWE-078/CommandInjectionGood.swift b/swift/ql/src/queries/Security/CWE-078/CommandInjectionGood.swift similarity index 100% rename from swift/ql/src/experimental/Security/CWE-078/CommandInjectionGood.swift rename to swift/ql/src/queries/Security/CWE-078/CommandInjectionGood.swift From 1c6a4b8cbf70281fb40c97668152db064dd66907 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 6 Nov 2023 17:32:25 +0000 Subject: [PATCH 079/122] Swift: Update the test .qlref. --- .../ql/test/query-tests/Security/CWE-078/CommandInjection.qlref | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.qlref b/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.qlref index 3556b36b185..87be59af70b 100644 --- a/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.qlref +++ b/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.qlref @@ -1 +1 @@ -experimental/Security/CWE-078/CommandInjection.ql \ No newline at end of file +queries/Security/CWE-078/CommandInjection.ql \ No newline at end of file From 4455ed982dbce52e41159734e853ebe1e627bdab Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 6 Nov 2023 17:33:46 +0000 Subject: [PATCH 080/122] C++: Accept query test changes. --- .../Security/CWE/CWE-193/InvalidPointerDeref.expected | 8 -------- cpp/ql/test/query-tests/Security/CWE/CWE-193/test.cpp | 4 ++-- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected index 97850d80019..c530e4717db 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected @@ -30,8 +30,6 @@ edges | test.cpp:206:17:206:23 | ... + ... | test.cpp:206:17:206:23 | ... + ... | | test.cpp:206:17:206:23 | ... + ... | test.cpp:213:5:213:13 | ... = ... | | test.cpp:206:17:206:23 | ... + ... | test.cpp:213:5:213:13 | ... = ... | -| test.cpp:231:18:231:30 | new[] | test.cpp:232:3:232:20 | ... = ... | -| test.cpp:238:20:238:32 | new[] | test.cpp:239:5:239:22 | ... = ... | | test.cpp:260:13:260:24 | new[] | test.cpp:261:14:261:21 | ... + ... | | test.cpp:261:14:261:21 | ... + ... | test.cpp:261:14:261:21 | ... + ... | | test.cpp:261:14:261:21 | ... + ... | test.cpp:264:13:264:14 | * ... | @@ -135,10 +133,6 @@ nodes | test.cpp:206:17:206:23 | ... + ... | semmle.label | ... + ... | | test.cpp:206:17:206:23 | ... + ... | semmle.label | ... + ... | | test.cpp:213:5:213:13 | ... = ... | semmle.label | ... = ... | -| test.cpp:231:18:231:30 | new[] | semmle.label | new[] | -| test.cpp:232:3:232:20 | ... = ... | semmle.label | ... = ... | -| test.cpp:238:20:238:32 | new[] | semmle.label | new[] | -| test.cpp:239:5:239:22 | ... = ... | semmle.label | ... = ... | | test.cpp:260:13:260:24 | new[] | semmle.label | new[] | | test.cpp:261:14:261:21 | ... + ... | semmle.label | ... + ... | | test.cpp:261:14:261:21 | ... + ... | semmle.label | ... + ... | @@ -222,8 +216,6 @@ subpaths | test.cpp:67:9:67:14 | ... = ... | test.cpp:52:19:52:37 | call to malloc | test.cpp:67:9:67:14 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:52:19:52:37 | call to malloc | call to malloc | test.cpp:53:20:53:23 | size | size | | test.cpp:201:5:201:19 | ... = ... | test.cpp:194:15:194:33 | call to malloc | test.cpp:201:5:201:19 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:194:15:194:33 | call to malloc | call to malloc | test.cpp:195:21:195:23 | len | len | | test.cpp:213:5:213:13 | ... = ... | test.cpp:205:15:205:33 | call to malloc | test.cpp:213:5:213:13 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:205:15:205:33 | call to malloc | call to malloc | test.cpp:206:21:206:23 | len | len | -| test.cpp:232:3:232:20 | ... = ... | test.cpp:231:18:231:30 | new[] | test.cpp:232:3:232:20 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:231:18:231:30 | new[] | new[] | test.cpp:232:11:232:15 | index | index | -| test.cpp:239:5:239:22 | ... = ... | test.cpp:238:20:238:32 | new[] | test.cpp:239:5:239:22 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:238:20:238:32 | new[] | new[] | test.cpp:239:13:239:17 | index | index | | test.cpp:264:13:264:14 | * ... | test.cpp:260:13:260:24 | new[] | test.cpp:264:13:264:14 | * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:260:13:260:24 | new[] | new[] | test.cpp:261:19:261:21 | len | len | | test.cpp:274:5:274:10 | ... = ... | test.cpp:270:13:270:24 | new[] | test.cpp:274:5:274:10 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:270:13:270:24 | new[] | new[] | test.cpp:271:19:271:21 | len | len | | test.cpp:358:14:358:26 | end_plus_one indirection | test.cpp:355:14:355:27 | new[] | test.cpp:358:14:358:26 | end_plus_one indirection | This read might be out of bounds, as the pointer might be equal to $@ + $@ + 1. | test.cpp:355:14:355:27 | new[] | new[] | test.cpp:356:20:356:23 | size | size | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-193/test.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-193/test.cpp index a401867a86c..214bb80026a 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-193/test.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-193/test.cpp @@ -229,14 +229,14 @@ void test15(unsigned index) { return; } int* newname = new int[size]; - newname[index] = 0; // $ alloc=L231 deref=L232 // GOOD [FALSE POSITIVE] + newname[index] = 0; // GOOD } void test16(unsigned index) { unsigned size = index + 13; if(size >= index) { int* newname = new int[size]; - newname[index] = 0; // $ alloc=L238 deref=L239 // GOOD [FALSE POSITIVE] + newname[index] = 0; // GOOD } } From c85bdcd5abb1030f7f0e590a68e3ee35ca4a5909 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 6 Nov 2023 17:36:58 +0000 Subject: [PATCH 081/122] Swift: Change note. --- swift/ql/src/change-notes/2023-11-06-command-injection.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 swift/ql/src/change-notes/2023-11-06-command-injection.md diff --git a/swift/ql/src/change-notes/2023-11-06-command-injection.md b/swift/ql/src/change-notes/2023-11-06-command-injection.md new file mode 100644 index 00000000000..c04e596dab2 --- /dev/null +++ b/swift/ql/src/change-notes/2023-11-06-command-injection.md @@ -0,0 +1,5 @@ +--- +category: newQuery +--- + +* Added new query "System command built from user-controlled sources" (`swift/command-line-injection`) for Swift. This query detects system commands built from user-controlled sources without sufficient validation. The query was previously contributed to the 'experimental' directory but will now run by default for all code scanning users. From ae21bbf0b2c67a8a6d6031c9223ccad318fd52f2 Mon Sep 17 00:00:00 2001 From: Cornelius Riemenschneider Date: Mon, 6 Nov 2023 23:22:05 +0100 Subject: [PATCH 082/122] Java: Make integration test more robust wrt recent Java versions. I've been investigating moving the Java integration tests to a GH-hosted macos runner, instead of a self-hosted one. This test is not compatible with a GH-hosted runners Java setup. It is also not compatible to being exposed to JAVA_21_HOME_X64 variable yet. This PR fixes both issues. --- .../diagnostics/java-version-too-old/test.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/test.py b/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/test.py index 1cb00f89f55..e211786c43b 100644 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/test.py +++ b/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/test.py @@ -3,14 +3,16 @@ from create_database_utils import * from diagnostics_test_utils import * # Ensure we're using an old Java version that won't work with Gradle -if "JAVA_HOME_8_X64" in os.environ: - os.environ["JAVA_HOME"] = os.environ["JAVA_HOME_8_X64"] - sep = ";" if platform.system() == "Windows" else ":" - os.environ["PATH"] = "".join([os.path.join(os.environ["JAVA_HOME"], "bin"), sep, os.environ["PATH"]]) +for java_home in ["JAVA_HOME_8_X64", "JAVA_HOME_8_arm64", "JAVA_HOME_8_ARM64"]: + if java_home in os.environ: + os.environ["JAVA_HOME"] = os.environ[java_home] + sep = ";" if platform.system() == "Windows" else ":" + os.environ["PATH"] = "".join([os.path.join(os.environ["JAVA_HOME"], "bin"), sep, os.environ["PATH"]]) + break -# Ensure the autobuilder *doesn't* see Java 11 or 17, which it could switch to in order to build the project: -for k in ["JAVA_HOME_11_X64", "JAVA_HOME_17_X64"]: - if k in os.environ: +# Ensure the autobuilder *doesn't* see newer Java versions, which it could switch to in order to build the project: +for k in os.environ: + if re.match(r"^JAVA_HOME_\d\d_", k): del os.environ[k] # Use a custom, empty toolchains.xml file so the autobuilder doesn't see any Java versions that may be From 4e70e674fdc5634852521533c604b8946b1d3692 Mon Sep 17 00:00:00 2001 From: Cornelius Riemenschneider Date: Mon, 6 Nov 2023 23:26:21 +0100 Subject: [PATCH 083/122] Revert "Java: Make integration test more robust wrt recent Java versions." This reverts commit ae21bbf0b2c67a8a6d6031c9223ccad318fd52f2. --- .../diagnostics/java-version-too-old/test.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/test.py b/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/test.py index e211786c43b..1cb00f89f55 100644 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/test.py +++ b/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/test.py @@ -3,16 +3,14 @@ from create_database_utils import * from diagnostics_test_utils import * # Ensure we're using an old Java version that won't work with Gradle -for java_home in ["JAVA_HOME_8_X64", "JAVA_HOME_8_arm64", "JAVA_HOME_8_ARM64"]: - if java_home in os.environ: - os.environ["JAVA_HOME"] = os.environ[java_home] - sep = ";" if platform.system() == "Windows" else ":" - os.environ["PATH"] = "".join([os.path.join(os.environ["JAVA_HOME"], "bin"), sep, os.environ["PATH"]]) - break +if "JAVA_HOME_8_X64" in os.environ: + os.environ["JAVA_HOME"] = os.environ["JAVA_HOME_8_X64"] + sep = ";" if platform.system() == "Windows" else ":" + os.environ["PATH"] = "".join([os.path.join(os.environ["JAVA_HOME"], "bin"), sep, os.environ["PATH"]]) -# Ensure the autobuilder *doesn't* see newer Java versions, which it could switch to in order to build the project: -for k in os.environ: - if re.match(r"^JAVA_HOME_\d\d_", k): +# Ensure the autobuilder *doesn't* see Java 11 or 17, which it could switch to in order to build the project: +for k in ["JAVA_HOME_11_X64", "JAVA_HOME_17_X64"]: + if k in os.environ: del os.environ[k] # Use a custom, empty toolchains.xml file so the autobuilder doesn't see any Java versions that may be From cff9bcfabce7cc2845fa12a2007e5f918d7fda7e Mon Sep 17 00:00:00 2001 From: Cornelius Riemenschneider Date: Mon, 6 Nov 2023 23:29:33 +0100 Subject: [PATCH 084/122] Revert "Revert "Java: Make integration test more robust wrt recent Java versions."" This reverts commit 4e70e674fdc5634852521533c604b8946b1d3692. --- .../diagnostics/java-version-too-old/test.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/test.py b/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/test.py index 1cb00f89f55..e211786c43b 100644 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/test.py +++ b/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/test.py @@ -3,14 +3,16 @@ from create_database_utils import * from diagnostics_test_utils import * # Ensure we're using an old Java version that won't work with Gradle -if "JAVA_HOME_8_X64" in os.environ: - os.environ["JAVA_HOME"] = os.environ["JAVA_HOME_8_X64"] - sep = ";" if platform.system() == "Windows" else ":" - os.environ["PATH"] = "".join([os.path.join(os.environ["JAVA_HOME"], "bin"), sep, os.environ["PATH"]]) +for java_home in ["JAVA_HOME_8_X64", "JAVA_HOME_8_arm64", "JAVA_HOME_8_ARM64"]: + if java_home in os.environ: + os.environ["JAVA_HOME"] = os.environ[java_home] + sep = ";" if platform.system() == "Windows" else ":" + os.environ["PATH"] = "".join([os.path.join(os.environ["JAVA_HOME"], "bin"), sep, os.environ["PATH"]]) + break -# Ensure the autobuilder *doesn't* see Java 11 or 17, which it could switch to in order to build the project: -for k in ["JAVA_HOME_11_X64", "JAVA_HOME_17_X64"]: - if k in os.environ: +# Ensure the autobuilder *doesn't* see newer Java versions, which it could switch to in order to build the project: +for k in os.environ: + if re.match(r"^JAVA_HOME_\d\d_", k): del os.environ[k] # Use a custom, empty toolchains.xml file so the autobuilder doesn't see any Java versions that may be From 1dc08941f864f041b46064bafc58fcd21052c6a9 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 7 Nov 2023 09:16:59 +0000 Subject: [PATCH 085/122] C++: Use 'MustFlow' in 'cpp/uninitialized-local'. --- .../Memory Management/UninitializedLocal.ql | 57 +++++++++---------- .../semmle/tests/UninitializedLocal.expected | 24 ++------ 2 files changed, 32 insertions(+), 49 deletions(-) diff --git a/cpp/ql/src/Likely Bugs/Memory Management/UninitializedLocal.ql b/cpp/ql/src/Likely Bugs/Memory Management/UninitializedLocal.ql index 0fbd1707db0..04cd25aeb02 100644 --- a/cpp/ql/src/Likely Bugs/Memory Management/UninitializedLocal.ql +++ b/cpp/ql/src/Likely Bugs/Memory Management/UninitializedLocal.ql @@ -13,7 +13,8 @@ */ import cpp -import semmle.code.cpp.controlflow.StackVariableReachability +import semmle.code.cpp.ir.IR +import semmle.code.cpp.ir.dataflow.MustFlow /** * Auxiliary predicate: Types that don't require initialization @@ -33,31 +34,6 @@ predicate allocatedType(Type t) { allocatedType(t.getUnspecifiedType()) } -/** - * A declaration of a local variable that leaves the - * variable uninitialized. - */ -DeclStmt declWithNoInit(LocalVariable v) { - result.getADeclaration() = v and - not exists(v.getInitializer()) and - /* The type of the variable is not stack-allocated. */ - exists(Type t | t = v.getType() | not allocatedType(t)) -} - -class UninitialisedLocalReachability extends StackVariableReachability { - UninitialisedLocalReachability() { this = "UninitialisedLocal" } - - override predicate isSource(ControlFlowNode node, StackVariable v) { node = declWithNoInit(v) } - - override predicate isSink(ControlFlowNode node, StackVariable v) { useOfVarActual(v, node) } - - override predicate isBarrier(ControlFlowNode node, StackVariable v) { - // only report the _first_ possibly uninitialized use - useOfVarActual(v, node) or - definitionBarrier(v, node) - } -} - pragma[noinline] predicate containsInlineAssembly(Function f) { exists(AsmStmt s | s.getEnclosingFunction() = f) } @@ -82,8 +58,31 @@ VariableAccess commonException() { containsInlineAssembly(result.getEnclosingFunction()) } -from UninitialisedLocalReachability r, LocalVariable v, VariableAccess va +predicate isSinkImpl(Instruction sink, VariableAccess va) { + exists(LoadInstruction load | + va = load.getUnconvertedResultExpression() and + not va = commonException() and + sink = load.getSourceValue() + ) +} + +class MustFlow extends MustFlowConfiguration { + MustFlow() { this = "MustFlow" } + + override predicate isSource(Instruction source) { + source instanceof UninitializedInstruction and + exists(Type t | t = source.getResultType() | not allocatedType(t)) + } + + override predicate isSink(Operand sink) { isSinkImpl(sink.getDef(), _) } + + override predicate allowInterproceduralFlow() { none() } +} + +from + VariableAccess va, LocalVariable v, MustFlow conf, MustFlowPathNode source, MustFlowPathNode sink where - r.reaches(_, v, va) and - not va = commonException() + conf.hasFlowPath(source, sink) and + isSinkImpl(sink.getInstruction(), va) and + v = va.getTarget() select va, "The variable $@ may not be initialized at this access.", v, v.getName() diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected index 2b5e6549a30..6d25c2e9e3a 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected @@ -1,20 +1,4 @@ -| test.cpp:12:6:12:8 | foo | The variable $@ may not be initialized at this access. | test.cpp:11:6:11:8 | foo | foo | -| test.cpp:30:6:30:8 | foo | The variable $@ may not be initialized at this access. | test.cpp:26:6:26:8 | foo | foo | -| test.cpp:46:6:46:8 | foo | The variable $@ may not be initialized at this access. | test.cpp:42:6:42:8 | foo | foo | -| test.cpp:55:7:55:9 | foo | The variable $@ may not be initialized at this access. | test.cpp:50:6:50:8 | foo | foo | -| test.cpp:67:7:67:9 | foo | The variable $@ may not be initialized at this access. | test.cpp:61:6:61:8 | foo | foo | -| test.cpp:92:6:92:8 | foo | The variable $@ may not be initialized at this access. | test.cpp:82:6:82:8 | foo | foo | -| test.cpp:113:6:113:8 | foo | The variable $@ may not be initialized at this access. | test.cpp:111:6:111:8 | foo | foo | -| test.cpp:132:9:132:9 | j | The variable $@ may not be initialized at this access. | test.cpp:126:6:126:6 | j | j | -| test.cpp:219:3:219:3 | x | The variable $@ may not be initialized at this access. | test.cpp:218:7:218:7 | x | x | -| test.cpp:243:13:243:13 | i | The variable $@ may not be initialized at this access. | test.cpp:241:6:241:6 | i | i | -| test.cpp:329:9:329:11 | val | The variable $@ may not be initialized at this access. | test.cpp:321:6:321:8 | val | val | -| test.cpp:336:10:336:10 | a | The variable $@ may not be initialized at this access. | test.cpp:333:7:333:7 | a | a | -| test.cpp:369:10:369:10 | a | The variable $@ may not be initialized at this access. | test.cpp:358:7:358:7 | a | a | -| test.cpp:378:9:378:11 | val | The variable $@ may not be initialized at this access. | test.cpp:359:6:359:8 | val | val | -| test.cpp:417:10:417:10 | j | The variable $@ may not be initialized at this access. | test.cpp:414:9:414:9 | j | j | -| test.cpp:436:9:436:9 | j | The variable $@ may not be initialized at this access. | test.cpp:431:9:431:9 | j | j | -| test.cpp:454:2:454:2 | x | The variable $@ may not be initialized at this access. | test.cpp:452:6:452:6 | x | x | -| test.cpp:460:7:460:7 | x | The variable $@ may not be initialized at this access. | test.cpp:458:6:458:6 | x | x | -| test.cpp:467:2:467:2 | x | The variable $@ may not be initialized at this access. | test.cpp:464:6:464:6 | x | x | -| test.cpp:474:7:474:7 | x | The variable $@ may not be initialized at this access. | test.cpp:471:6:471:6 | x | x | +| test.cpp:121:6:121:8 | foo | The variable $@ may not be initialized at this access. | test.cpp:119:6:119:8 | foo | foo | +| test.cpp:179:7:179:9 | foo | The variable $@ may not be initialized at this access. | test.cpp:177:7:177:9 | foo | foo | +| test.cpp:192:7:192:9 | foo | The variable $@ may not be initialized at this access. | test.cpp:190:7:190:9 | foo | foo | +| test.cpp:213:7:213:7 | x | The variable $@ may not be initialized at this access. | test.cpp:211:7:211:7 | x | x | From 6bf2d47321bf240a5d931f321e59c335f0b08f09 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 7 Nov 2023 09:18:34 +0000 Subject: [PATCH 086/122] C++: Allow source = sink in 'MustFlow'. --- cpp/ql/lib/semmle/code/cpp/ir/dataflow/MustFlow.qll | 2 +- .../semmle/tests/UninitializedLocal.expected | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/MustFlow.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/MustFlow.qll index 904701144ca..09e63fc28ed 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/MustFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/MustFlow.qll @@ -48,7 +48,7 @@ abstract class MustFlowConfiguration extends string { */ final predicate hasFlowPath(MustFlowPathNode source, MustFlowPathSink sink) { this.isSource(source.getInstruction()) and - source.getASuccessor+() = sink + source.getASuccessor*() = sink } } diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected index 6d25c2e9e3a..14398176395 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected @@ -1,4 +1,17 @@ +| test.cpp:12:6:12:8 | foo | The variable $@ may not be initialized at this access. | test.cpp:11:6:11:8 | foo | foo | +| test.cpp:113:6:113:8 | foo | The variable $@ may not be initialized at this access. | test.cpp:111:6:111:8 | foo | foo | | test.cpp:121:6:121:8 | foo | The variable $@ may not be initialized at this access. | test.cpp:119:6:119:8 | foo | foo | | test.cpp:179:7:179:9 | foo | The variable $@ may not be initialized at this access. | test.cpp:177:7:177:9 | foo | foo | | test.cpp:192:7:192:9 | foo | The variable $@ may not be initialized at this access. | test.cpp:190:7:190:9 | foo | foo | | test.cpp:213:7:213:7 | x | The variable $@ may not be initialized at this access. | test.cpp:211:7:211:7 | x | x | +| test.cpp:219:3:219:3 | x | The variable $@ may not be initialized at this access. | test.cpp:218:7:218:7 | x | x | +| test.cpp:243:13:243:13 | i | The variable $@ may not be initialized at this access. | test.cpp:241:6:241:6 | i | i | +| test.cpp:336:10:336:10 | a | The variable $@ may not be initialized at this access. | test.cpp:333:7:333:7 | a | a | +| test.cpp:369:10:369:10 | a | The variable $@ may not be initialized at this access. | test.cpp:358:7:358:7 | a | a | +| test.cpp:378:9:378:11 | val | The variable $@ may not be initialized at this access. | test.cpp:359:6:359:8 | val | val | +| test.cpp:417:10:417:10 | j | The variable $@ may not be initialized at this access. | test.cpp:414:9:414:9 | j | j | +| test.cpp:436:9:436:9 | j | The variable $@ may not be initialized at this access. | test.cpp:431:9:431:9 | j | j | +| test.cpp:454:2:454:2 | x | The variable $@ may not be initialized at this access. | test.cpp:452:6:452:6 | x | x | +| test.cpp:460:7:460:7 | x | The variable $@ may not be initialized at this access. | test.cpp:458:6:458:6 | x | x | +| test.cpp:467:2:467:2 | x | The variable $@ may not be initialized at this access. | test.cpp:464:6:464:6 | x | x | +| test.cpp:474:7:474:7 | x | The variable $@ may not be initialized at this access. | test.cpp:471:6:471:6 | x | x | From 022c9eb3cdd6c60d03594d95c69295946c4500f7 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 7 Nov 2023 09:19:50 +0000 Subject: [PATCH 087/122] C++: Add a barrier feature to 'MustFlow'. --- .../lib/semmle/code/cpp/ir/dataflow/MustFlow.qll | 15 ++++++++++----- .../Memory Management/UninitializedLocal.ql | 2 ++ .../semmle/tests/UninitializedLocal.expected | 4 ---- .../Security/CWE/CWE-457/semmle/tests/test.cpp | 14 +++++++------- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/MustFlow.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/MustFlow.qll index 09e63fc28ed..531a63fb21a 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/MustFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/MustFlow.qll @@ -31,6 +31,8 @@ abstract class MustFlowConfiguration extends string { */ abstract predicate isSink(Operand sink); + predicate isBarrier(Instruction instr) { none() } + /** * Holds if the additional flow step from `node1` to `node2` must be taken * into account in the analysis. @@ -55,11 +57,14 @@ abstract class MustFlowConfiguration extends string { /** Holds if `node` flows from a source. */ pragma[nomagic] private predicate flowsFromSource(Instruction node, MustFlowConfiguration config) { - config.isSource(node) - or - exists(Instruction mid | - step(mid, node, config) and - flowsFromSource(mid, pragma[only_bind_into](config)) + not config.isBarrier(node) and + ( + config.isSource(node) + or + exists(Instruction mid | + step(mid, node, config) and + flowsFromSource(mid, pragma[only_bind_into](config)) + ) ) } diff --git a/cpp/ql/src/Likely Bugs/Memory Management/UninitializedLocal.ql b/cpp/ql/src/Likely Bugs/Memory Management/UninitializedLocal.ql index 04cd25aeb02..85bfb963fb9 100644 --- a/cpp/ql/src/Likely Bugs/Memory Management/UninitializedLocal.ql +++ b/cpp/ql/src/Likely Bugs/Memory Management/UninitializedLocal.ql @@ -77,6 +77,8 @@ class MustFlow extends MustFlowConfiguration { override predicate isSink(Operand sink) { isSinkImpl(sink.getDef(), _) } override predicate allowInterproceduralFlow() { none() } + + override predicate isBarrier(Instruction instr) { instr instanceof ChiInstruction } } from diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected index 14398176395..7b5233f45b4 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected @@ -1,9 +1,5 @@ | test.cpp:12:6:12:8 | foo | The variable $@ may not be initialized at this access. | test.cpp:11:6:11:8 | foo | foo | | test.cpp:113:6:113:8 | foo | The variable $@ may not be initialized at this access. | test.cpp:111:6:111:8 | foo | foo | -| test.cpp:121:6:121:8 | foo | The variable $@ may not be initialized at this access. | test.cpp:119:6:119:8 | foo | foo | -| test.cpp:179:7:179:9 | foo | The variable $@ may not be initialized at this access. | test.cpp:177:7:177:9 | foo | foo | -| test.cpp:192:7:192:9 | foo | The variable $@ may not be initialized at this access. | test.cpp:190:7:190:9 | foo | foo | -| test.cpp:213:7:213:7 | x | The variable $@ may not be initialized at this access. | test.cpp:211:7:211:7 | x | x | | test.cpp:219:3:219:3 | x | The variable $@ may not be initialized at this access. | test.cpp:218:7:218:7 | x | x | | test.cpp:243:13:243:13 | i | The variable $@ may not be initialized at this access. | test.cpp:241:6:241:6 | i | i | | test.cpp:336:10:336:10 | a | The variable $@ may not be initialized at this access. | test.cpp:333:7:333:7 | a | a | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/test.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/test.cpp index 7660f564d6d..69b7f4295e2 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/test.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/test.cpp @@ -27,7 +27,7 @@ void test4(bool b) { if (b) { foo = 1; } - use(foo); // BAD + use(foo); // BAD [NOT DETECTED] } void test5() { @@ -43,7 +43,7 @@ void test5(int count) { for (int i = 0; i < count; i++) { foo = i; } - use(foo); // BAD + use(foo); // BAD [NOT DETECTED] } void test6(bool b) { @@ -52,7 +52,7 @@ void test6(bool b) { foo = 42; } if (b) { - use(foo); // GOOD (REPORTED, FP) + use(foo); // GOOD } } @@ -64,7 +64,7 @@ void test7(bool b) { set = true; } if (set) { - use(foo); // GOOD (REPORTED, FP) + use(foo); // GOOD } } @@ -89,7 +89,7 @@ void test9(int count) { if (!set) { foo = 42; } - use(foo); // GOOD (REPORTED, FP) + use(foo); // GOOD } void test10() { @@ -129,7 +129,7 @@ int absWrong(int i) { } else if (i < 0) { j = -i; } - return j; // wrong: j may not be initialized before use + return j; // wrong: j may not be initialized before use [NOT DETECTED] } // Example from qhelp @@ -326,7 +326,7 @@ int test28() { a = false; c = false; } - return val; // GOOD [FALSE POSITIVE] + return val; // GOOD } int test29() { From e8a466a02c9d9f7c9503ec3924139b9920260057 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 7 Nov 2023 09:22:05 +0000 Subject: [PATCH 088/122] Update dead link. --- .../code/java/security/regexp/ExponentialBackTracking.qll | 2 +- java/ql/src/Security/CWE/CWE-730/ReDoSReferences.inc.qhelp | 2 +- .../javascript/security/regexp/ExponentialBackTracking.qll | 2 +- javascript/ql/src/Performance/ReDoSReferences.inc.qhelp | 2 +- .../semmle/python/security/regexp/ExponentialBackTracking.qll | 2 +- python/ql/src/Security/CWE-730/ReDoSReferences.inc.qhelp | 2 +- .../lib/codeql/ruby/security/regexp/ExponentialBackTracking.qll | 2 +- ruby/ql/src/queries/security/cwe-1333/ReDoSReferences.inc.qhelp | 2 +- shared/regex/codeql/regex/nfa/ExponentialBackTracking.qll | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/regexp/ExponentialBackTracking.qll b/java/ql/lib/semmle/code/java/security/regexp/ExponentialBackTracking.qll index d0a08dc88bf..0a948ff6d98 100644 --- a/java/ql/lib/semmle/code/java/security/regexp/ExponentialBackTracking.qll +++ b/java/ql/lib/semmle/code/java/security/regexp/ExponentialBackTracking.qll @@ -3,7 +3,7 @@ * * James Kirrage, Asiri Rathnayake, Hayo Thielecke: Static Analysis for * Regular Expression Denial-of-Service Attacks. NSS 2013. - * (http://www.cs.bham.ac.uk/~hxt/research/reg-exp-sec.pdf) + * (https://arxiv.org/abs/1301.0849) * Asiri Rathnayake, Hayo Thielecke: Static Analysis for Regular Expression * Exponential Runtime via Substructural Logics. 2014. * (https://www.cs.bham.ac.uk/~hxt/research/redos_full.pdf) diff --git a/java/ql/src/Security/CWE/CWE-730/ReDoSReferences.inc.qhelp b/java/ql/src/Security/CWE/CWE-730/ReDoSReferences.inc.qhelp index 2b3e5f17c62..7aec3aa0bf0 100644 --- a/java/ql/src/Security/CWE/CWE-730/ReDoSReferences.inc.qhelp +++ b/java/ql/src/Security/CWE/CWE-730/ReDoSReferences.inc.qhelp @@ -10,7 +10,7 @@
  • Wikipedia: ReDoS.
  • Wikipedia: Time complexity.
  • James Kirrage, Asiri Rathnayake, Hayo Thielecke: - Static Analysis for Regular Expression Denial-of-Service Attack. + Static Analysis for Regular Expression Denial-of-Service Attack.
  • diff --git a/javascript/ql/lib/semmle/javascript/security/regexp/ExponentialBackTracking.qll b/javascript/ql/lib/semmle/javascript/security/regexp/ExponentialBackTracking.qll index aa0cd6b3e69..f930a7d9d3d 100644 --- a/javascript/ql/lib/semmle/javascript/security/regexp/ExponentialBackTracking.qll +++ b/javascript/ql/lib/semmle/javascript/security/regexp/ExponentialBackTracking.qll @@ -3,7 +3,7 @@ * * James Kirrage, Asiri Rathnayake, Hayo Thielecke: Static Analysis for * Regular Expression Denial-of-Service Attacks. NSS 2013. - * (http://www.cs.bham.ac.uk/~hxt/research/reg-exp-sec.pdf) + * (https://arxiv.org/abs/1301.0849) * Asiri Rathnayake, Hayo Thielecke: Static Analysis for Regular Expression * Exponential Runtime via Substructural Logics. 2014. * (https://www.cs.bham.ac.uk/~hxt/research/redos_full.pdf) diff --git a/javascript/ql/src/Performance/ReDoSReferences.inc.qhelp b/javascript/ql/src/Performance/ReDoSReferences.inc.qhelp index 2b3e5f17c62..7aec3aa0bf0 100644 --- a/javascript/ql/src/Performance/ReDoSReferences.inc.qhelp +++ b/javascript/ql/src/Performance/ReDoSReferences.inc.qhelp @@ -10,7 +10,7 @@
  • Wikipedia: ReDoS.
  • Wikipedia: Time complexity.
  • James Kirrage, Asiri Rathnayake, Hayo Thielecke: - Static Analysis for Regular Expression Denial-of-Service Attack. + Static Analysis for Regular Expression Denial-of-Service Attack.
  • diff --git a/python/ql/lib/semmle/python/security/regexp/ExponentialBackTracking.qll b/python/ql/lib/semmle/python/security/regexp/ExponentialBackTracking.qll index f4628b883da..263bf0f5345 100644 --- a/python/ql/lib/semmle/python/security/regexp/ExponentialBackTracking.qll +++ b/python/ql/lib/semmle/python/security/regexp/ExponentialBackTracking.qll @@ -3,7 +3,7 @@ * * James Kirrage, Asiri Rathnayake, Hayo Thielecke: Static Analysis for * Regular Expression Denial-of-Service Attacks. NSS 2013. - * (http://www.cs.bham.ac.uk/~hxt/research/reg-exp-sec.pdf) + * (https://arxiv.org/abs/1301.0849) * Asiri Rathnayake, Hayo Thielecke: Static Analysis for Regular Expression * Exponential Runtime via Substructural Logics. 2014. * (https://www.cs.bham.ac.uk/~hxt/research/redos_full.pdf) diff --git a/python/ql/src/Security/CWE-730/ReDoSReferences.inc.qhelp b/python/ql/src/Security/CWE-730/ReDoSReferences.inc.qhelp index 2b3e5f17c62..7aec3aa0bf0 100644 --- a/python/ql/src/Security/CWE-730/ReDoSReferences.inc.qhelp +++ b/python/ql/src/Security/CWE-730/ReDoSReferences.inc.qhelp @@ -10,7 +10,7 @@
  • Wikipedia: ReDoS.
  • Wikipedia: Time complexity.
  • James Kirrage, Asiri Rathnayake, Hayo Thielecke: - Static Analysis for Regular Expression Denial-of-Service Attack. + Static Analysis for Regular Expression Denial-of-Service Attack.
  • diff --git a/ruby/ql/lib/codeql/ruby/security/regexp/ExponentialBackTracking.qll b/ruby/ql/lib/codeql/ruby/security/regexp/ExponentialBackTracking.qll index 608f0e59552..c8d21b0bd31 100644 --- a/ruby/ql/lib/codeql/ruby/security/regexp/ExponentialBackTracking.qll +++ b/ruby/ql/lib/codeql/ruby/security/regexp/ExponentialBackTracking.qll @@ -3,7 +3,7 @@ * * James Kirrage, Asiri Rathnayake, Hayo Thielecke: Static Analysis for * Regular Expression Denial-of-Service Attacks. NSS 2013. - * (http://www.cs.bham.ac.uk/~hxt/research/reg-exp-sec.pdf) + * (https://arxiv.org/abs/1301.0849) * Asiri Rathnayake, Hayo Thielecke: Static Analysis for Regular Expression * Exponential Runtime via Substructural Logics. 2014. * (https://www.cs.bham.ac.uk/~hxt/research/redos_full.pdf) diff --git a/ruby/ql/src/queries/security/cwe-1333/ReDoSReferences.inc.qhelp b/ruby/ql/src/queries/security/cwe-1333/ReDoSReferences.inc.qhelp index d8bb9eb9ee0..641b1e56b7c 100644 --- a/ruby/ql/src/queries/security/cwe-1333/ReDoSReferences.inc.qhelp +++ b/ruby/ql/src/queries/security/cwe-1333/ReDoSReferences.inc.qhelp @@ -7,7 +7,7 @@
  • Wikipedia: ReDoS.
  • Wikipedia: Time complexity.
  • James Kirrage, Asiri Rathnayake, Hayo Thielecke: - Static Analysis for Regular Expression Denial-of-Service Attack. + Static Analysis for Regular Expression Denial-of-Service Attack.
  • diff --git a/shared/regex/codeql/regex/nfa/ExponentialBackTracking.qll b/shared/regex/codeql/regex/nfa/ExponentialBackTracking.qll index a2a35298b37..450ee807089 100644 --- a/shared/regex/codeql/regex/nfa/ExponentialBackTracking.qll +++ b/shared/regex/codeql/regex/nfa/ExponentialBackTracking.qll @@ -3,7 +3,7 @@ * * James Kirrage, Asiri Rathnayake, Hayo Thielecke: Static Analysis for * Regular Expression Denial-of-Service Attacks. NSS 2013. - * (http://www.cs.bham.ac.uk/~hxt/research/reg-exp-sec.pdf) + * (https://arxiv.org/abs/1301.0849) * Asiri Rathnayake, Hayo Thielecke: Static Analysis for Regular Expression * Exponential Runtime via Substructural Logics. 2014. * (https://www.cs.bham.ac.uk/~hxt/research/redos_full.pdf) From 0fd4d4a114d9bca35ed93675cdc8d6176315762e Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 7 Nov 2023 09:29:34 +0000 Subject: [PATCH 089/122] C++: Add QLDoc. --- cpp/ql/lib/semmle/code/cpp/ir/dataflow/MustFlow.qll | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/MustFlow.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/MustFlow.qll index 531a63fb21a..b085440f6bc 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/MustFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/MustFlow.qll @@ -31,6 +31,9 @@ abstract class MustFlowConfiguration extends string { */ abstract predicate isSink(Operand sink); + /** + * Holds if data flow through `instr` is prohibited. + */ predicate isBarrier(Instruction instr) { none() } /** From 6669cf805faecec64d633024cd3ff5d971e9ada5 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 7 Nov 2023 09:32:07 +0000 Subject: [PATCH 090/122] C++: Add change note. --- cpp/ql/src/change-notes/2023-11-07-uninitialized-local.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cpp/ql/src/change-notes/2023-11-07-uninitialized-local.md diff --git a/cpp/ql/src/change-notes/2023-11-07-uninitialized-local.md b/cpp/ql/src/change-notes/2023-11-07-uninitialized-local.md new file mode 100644 index 00000000000..bdb67692534 --- /dev/null +++ b/cpp/ql/src/change-notes/2023-11-07-uninitialized-local.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The `cpp/uninitialized-local` query has been improved to produce fewer false positives. From ccaa79234347bd11aadc39a9a94df5aff18e5a03 Mon Sep 17 00:00:00 2001 From: Cornelius Riemenschneider Date: Tue, 7 Nov 2023 11:07:37 +0100 Subject: [PATCH 091/122] Address on-slack review. --- .../java/diagnostics/java-version-too-old/test.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/test.py b/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/test.py index e211786c43b..d087461cd89 100644 --- a/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/test.py +++ b/java/ql/integration-tests/all-platforms/java/diagnostics/java-version-too-old/test.py @@ -3,9 +3,9 @@ from create_database_utils import * from diagnostics_test_utils import * # Ensure we're using an old Java version that won't work with Gradle -for java_home in ["JAVA_HOME_8_X64", "JAVA_HOME_8_arm64", "JAVA_HOME_8_ARM64"]: - if java_home in os.environ: - os.environ["JAVA_HOME"] = os.environ[java_home] +for k in os.environ: + if k.upper() in ["JAVA_HOME_8_X64", "JAVA_HOME_8_ARM64"]: + os.environ["JAVA_HOME"] = os.environ[k] sep = ";" if platform.system() == "Windows" else ":" os.environ["PATH"] = "".join([os.path.join(os.environ["JAVA_HOME"], "bin"), sep, os.environ["PATH"]]) break From 904a8b1ea945a56d84381e1762b6a9068a71a930 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Mon, 6 Nov 2023 15:15:07 +0100 Subject: [PATCH 092/122] Python: Add consistency tests for class scope --- .../dataflow/consistency/class_scope.py | 25 +++++++++++++++++++ .../consistency/dataflow-consistency.expected | 6 +++++ 2 files changed, 31 insertions(+) create mode 100644 python/ql/test/experimental/dataflow/consistency/class_scope.py diff --git a/python/ql/test/experimental/dataflow/consistency/class_scope.py b/python/ql/test/experimental/dataflow/consistency/class_scope.py new file mode 100644 index 00000000000..93a213a098b --- /dev/null +++ b/python/ql/test/experimental/dataflow/consistency/class_scope.py @@ -0,0 +1,25 @@ +# Originally we had module and functions as `DataFlowCallable``, and any call inside a +# class scope would not have a result for getEnclosingCallable. Since this was only a +# consistency error for calls, originally we added a new `DataFlowClassScope` only for +# those classes that had a call in their scope. That's why all the class definitions in +# this test do a call to the dummy function `func`. +# +# Note: this was shortsighted, since most DataFlow::Node use `getCallableScope` helper +# to define their .getEnclosingCallable(), which picks the first DataFlowCallable to +# contain the node. (so for some classes that would be DataFlowClassScope, and for some +# it would be the module/function containing the class definition) + +def func(*args, **kwargs): + print("func()") + +class Cls: + func() + class Inner: + func() + +def other_func(): + class Cls2: + func() + return Cls2 + +x = other_func() diff --git a/python/ql/test/experimental/dataflow/consistency/dataflow-consistency.expected b/python/ql/test/experimental/dataflow/consistency/dataflow-consistency.expected index e4f849ac82b..a73a2494437 100644 --- a/python/ql/test/experimental/dataflow/consistency/dataflow-consistency.expected +++ b/python/ql/test/experimental/dataflow/consistency/dataflow-consistency.expected @@ -1,5 +1,11 @@ uniqueEnclosingCallable uniqueCallEnclosingCallable +| class_scope.py:16:5:16:10 | func() | Call should have one enclosing callable but has 0. | +| class_scope.py:16:5:16:10 | func() | Call should have one enclosing callable but has 0. | +| class_scope.py:18:9:18:14 | func() | Call should have one enclosing callable but has 0. | +| class_scope.py:18:9:18:14 | func() | Call should have one enclosing callable but has 0. | +| class_scope.py:22:9:22:14 | func() | Call should have one enclosing callable but has 0. | +| class_scope.py:22:9:22:14 | func() | Call should have one enclosing callable but has 0. | uniqueType uniqueNodeLocation missingLocation From 9f43108ba8900d74015e282cc3bde1fbba040407 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Tue, 7 Nov 2023 11:00:56 +0100 Subject: [PATCH 093/122] Python: Fix `DataFlowCall.getEnclosingCallable` Now it is aligned with the implementation of DataFlow::Node See https://github.com/github/codeql/blob/4bc4e0845dede4439d7e27db95b09e4316593b09/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll#L134-L138 --- .../new/internal/DataFlowDispatch.qll | 11 ++++-- .../dataflow/new/internal/DataFlowPrivate.qll | 8 +++++ .../dataflow/new/internal/DataFlowPublic.qll | 8 ----- .../calls/dataflow-consistency.expected | 4 --- .../consistency/dataflow-consistency.expected | 6 ---- .../coverage/dataflow-consistency.expected | 2 -- .../dataflow-consistency.expected | 6 ---- .../CallGraph/dataflow-consistency.expected | 31 ---------------- .../py3/dataflow-consistency.expected | 4 --- .../django-orm/dataflow-consistency.expected | 35 ------------------- 10 files changed, 16 insertions(+), 99 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll index 123fa862c8e..6e2a462cc5a 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll @@ -1352,7 +1352,10 @@ abstract class DataFlowCall extends TDataFlowCall { abstract ControlFlowNode getNode(); /** Gets the enclosing callable of this call. */ - abstract DataFlowCallable getEnclosingCallable(); + DataFlowCallable getEnclosingCallable() { result = getCallableScope(this.getScope()) } + + /** Gets the scope of this node, if any. */ + abstract Scope getScope(); /** Gets the location of this dataflow call. */ abstract Location getLocation(); @@ -1400,7 +1403,7 @@ class NormalCall extends ExtractedDataFlowCall, TNormalCall { override ControlFlowNode getNode() { result = call } - override DataFlowCallable getEnclosingCallable() { result.getScope() = call.getScope() } + override Scope getScope() { result = call.getScope() } override DataFlowCallable getCallable() { result.(DataFlowFunction).getScope() = target } @@ -1450,7 +1453,7 @@ class PotentialLibraryCall extends ExtractedDataFlowCall, TPotentialLibraryCall override ControlFlowNode getNode() { result = call } - override DataFlowCallable getEnclosingCallable() { result.getScope() = call.getScope() } + override Scope getScope() { result = call.getScope() } } /** @@ -1474,6 +1477,8 @@ class SummaryCall extends DataFlowCall, TSummaryCall { override DataFlowCallable getEnclosingCallable() { result.asLibraryCallable() = c } + override Scope getScope() { none() } + override DataFlowCallable getCallable() { none() } override ArgumentNode getArgument(ArgumentPosition apos) { 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 32a2d4a27db..82464c9bda6 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -1044,3 +1044,11 @@ class ContentApprox = Unit; /** Gets an approximated value for content `c`. */ pragma[inline] ContentApprox getContentApprox(Content c) { any() } + +/** Helper for `.getEnclosingCallable`. */ +DataFlowCallable getCallableScope(Scope s) { + result.getScope() = s + or + not exists(DataFlowCallable c | c.getScope() = s) and + result = getCallableScope(s.getEnclosingScope()) +} 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 0456278bc66..e204d0db063 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll @@ -117,14 +117,6 @@ newtype TNode = exists(ParameterPosition ppos | ppos.isKeyword(_) | exists(callable.getParameter(ppos))) } -/** Helper for `Node::getEnclosingCallable`. */ -private DataFlowCallable getCallableScope(Scope s) { - result.getScope() = s - or - not exists(DataFlowCallable c | c.getScope() = s) and - result = getCallableScope(s.getEnclosingScope()) -} - private import semmle.python.internal.CachedStages /** diff --git a/python/ql/test/experimental/dataflow/calls/dataflow-consistency.expected b/python/ql/test/experimental/dataflow/calls/dataflow-consistency.expected index bf226e7fe62..e4f849ac82b 100644 --- a/python/ql/test/experimental/dataflow/calls/dataflow-consistency.expected +++ b/python/ql/test/experimental/dataflow/calls/dataflow-consistency.expected @@ -1,9 +1,5 @@ uniqueEnclosingCallable uniqueCallEnclosingCallable -| new_cls_param.py:14:6:14:16 | classmethod() | Call should have one enclosing callable but has 0. | -| test.py:21:6:21:17 | staticmethod() | Call should have one enclosing callable but has 0. | -| test.py:25:6:25:16 | classmethod() | Call should have one enclosing callable but has 0. | -| test.py:29:6:29:16 | classmethod() | Call should have one enclosing callable but has 0. | uniqueType uniqueNodeLocation missingLocation diff --git a/python/ql/test/experimental/dataflow/consistency/dataflow-consistency.expected b/python/ql/test/experimental/dataflow/consistency/dataflow-consistency.expected index a73a2494437..e4f849ac82b 100644 --- a/python/ql/test/experimental/dataflow/consistency/dataflow-consistency.expected +++ b/python/ql/test/experimental/dataflow/consistency/dataflow-consistency.expected @@ -1,11 +1,5 @@ uniqueEnclosingCallable uniqueCallEnclosingCallable -| class_scope.py:16:5:16:10 | func() | Call should have one enclosing callable but has 0. | -| class_scope.py:16:5:16:10 | func() | Call should have one enclosing callable but has 0. | -| class_scope.py:18:9:18:14 | func() | Call should have one enclosing callable but has 0. | -| class_scope.py:18:9:18:14 | func() | Call should have one enclosing callable but has 0. | -| class_scope.py:22:9:22:14 | func() | Call should have one enclosing callable but has 0. | -| class_scope.py:22:9:22:14 | func() | Call should have one enclosing callable but has 0. | uniqueType uniqueNodeLocation missingLocation diff --git a/python/ql/test/experimental/dataflow/coverage/dataflow-consistency.expected b/python/ql/test/experimental/dataflow/coverage/dataflow-consistency.expected index cedf7388d7d..e4f849ac82b 100644 --- a/python/ql/test/experimental/dataflow/coverage/dataflow-consistency.expected +++ b/python/ql/test/experimental/dataflow/coverage/dataflow-consistency.expected @@ -1,7 +1,5 @@ uniqueEnclosingCallable uniqueCallEnclosingCallable -| datamodel.py:71:6:71:16 | classmethod() | Call should have one enclosing callable but has 0. | -| datamodel.py:76:6:76:17 | staticmethod() | Call should have one enclosing callable but has 0. | uniqueType uniqueNodeLocation missingLocation diff --git a/python/ql/test/experimental/dataflow/variable-capture/dataflow-consistency.expected b/python/ql/test/experimental/dataflow/variable-capture/dataflow-consistency.expected index a2dbc3b14ae..e4f849ac82b 100644 --- a/python/ql/test/experimental/dataflow/variable-capture/dataflow-consistency.expected +++ b/python/ql/test/experimental/dataflow/variable-capture/dataflow-consistency.expected @@ -1,11 +1,5 @@ uniqueEnclosingCallable uniqueCallEnclosingCallable -| test_collections.py:39:17:39:38 | Lambda() | Call should have one enclosing callable but has 0. | -| test_collections.py:39:17:39:38 | Lambda() | Call should have one enclosing callable but has 0. | -| test_collections.py:45:19:45:24 | mod() | Call should have one enclosing callable but has 0. | -| test_collections.py:45:19:45:24 | mod() | Call should have one enclosing callable but has 0. | -| test_collections.py:52:13:52:24 | mod_local() | Call should have one enclosing callable but has 0. | -| test_collections.py:52:13:52:24 | mod_local() | Call should have one enclosing callable but has 0. | uniqueType uniqueNodeLocation missingLocation diff --git a/python/ql/test/experimental/library-tests/CallGraph/dataflow-consistency.expected b/python/ql/test/experimental/library-tests/CallGraph/dataflow-consistency.expected index cc45fe57238..e4f849ac82b 100644 --- a/python/ql/test/experimental/library-tests/CallGraph/dataflow-consistency.expected +++ b/python/ql/test/experimental/library-tests/CallGraph/dataflow-consistency.expected @@ -1,36 +1,5 @@ uniqueEnclosingCallable uniqueCallEnclosingCallable -| code/bound_method_arg.py:5:6:5:16 | classmethod() | Call should have one enclosing callable but has 0. | -| code/callable_as_argument.py:37:6:37:17 | staticmethod() | Call should have one enclosing callable but has 0. | -| code/callable_as_argument.py:49:10:49:21 | staticmethod() | Call should have one enclosing callable but has 0. | -| code/class_construction.py:13:6:13:16 | classmethod() | Call should have one enclosing callable but has 0. | -| code/class_properties.py:9:6:9:13 | property() | Call should have one enclosing callable but has 0. | -| code/class_properties.py:11:9:11:32 | print() | Call should have one enclosing callable but has 0. | -| code/class_properties.py:14:6:14:15 | Attribute() | Call should have one enclosing callable but has 0. | -| code/class_properties.py:19:6:19:16 | Attribute() | Call should have one enclosing callable but has 0. | -| code/class_properties.py:36:12:36:62 | property() | Call should have one enclosing callable but has 0. | -| code/class_properties.py:38:6:38:13 | property() | Call should have one enclosing callable but has 0. | -| code/class_properties.py:40:9:40:38 | print() | Call should have one enclosing callable but has 0. | -| code/class_subclass.py:10:6:10:17 | staticmethod() | Call should have one enclosing callable but has 0. | -| code/class_subclass.py:14:6:14:16 | classmethod() | Call should have one enclosing callable but has 0. | -| code/class_subclass.py:104:6:104:17 | staticmethod() | Call should have one enclosing callable but has 0. | -| code/class_subclass.py:108:6:108:16 | classmethod() | Call should have one enclosing callable but has 0. | -| code/class_subclass.py:112:6:112:17 | staticmethod() | Call should have one enclosing callable but has 0. | -| code/class_subclass.py:116:6:116:16 | classmethod() | Call should have one enclosing callable but has 0. | -| code/class_subclass.py:120:6:120:16 | classmethod() | Call should have one enclosing callable but has 0. | -| code/class_subclass.py:149:6:149:17 | staticmethod() | Call should have one enclosing callable but has 0. | -| code/class_subclass.py:153:6:153:16 | classmethod() | Call should have one enclosing callable but has 0. | -| code/class_super.py:13:6:13:16 | classmethod() | Call should have one enclosing callable but has 0. | -| code/class_super.py:28:6:28:17 | staticmethod() | Call should have one enclosing callable but has 0. | -| code/class_super.py:36:6:36:16 | classmethod() | Call should have one enclosing callable but has 0. | -| code/class_super.py:40:6:40:16 | classmethod() | Call should have one enclosing callable but has 0. | -| code/func_defined_outside_class.py:17:18:17:41 | staticmethod() | Call should have one enclosing callable but has 0. | -| code/func_defined_outside_class.py:18:18:18:40 | classmethod() | Call should have one enclosing callable but has 0. | -| code/func_defined_outside_class.py:38:11:38:21 | _gen() | Call should have one enclosing callable but has 0. | -| code/func_defined_outside_class.py:39:11:39:21 | _gen() | Call should have one enclosing callable but has 0. | -| code/nested_class.py:3:10:3:21 | staticmethod() | Call should have one enclosing callable but has 0. | -| code/nested_class.py:7:10:7:21 | staticmethod() | Call should have one enclosing callable but has 0. | -| code/self_passing.py:60:6:60:16 | classmethod() | Call should have one enclosing callable but has 0. | uniqueType uniqueNodeLocation missingLocation diff --git a/python/ql/test/library-tests/ApiGraphs/py3/dataflow-consistency.expected b/python/ql/test/library-tests/ApiGraphs/py3/dataflow-consistency.expected index 5060efc6fd3..e4f849ac82b 100644 --- a/python/ql/test/library-tests/ApiGraphs/py3/dataflow-consistency.expected +++ b/python/ql/test/library-tests/ApiGraphs/py3/dataflow-consistency.expected @@ -1,9 +1,5 @@ uniqueEnclosingCallable uniqueCallEnclosingCallable -| test_captured.py:7:22:7:25 | p() | Call should have one enclosing callable but has 0. | -| test_captured.py:7:22:7:25 | p() | Call should have one enclosing callable but has 0. | -| test_captured.py:14:26:14:30 | pp() | Call should have one enclosing callable but has 0. | -| test_captured.py:14:26:14:30 | pp() | Call should have one enclosing callable but has 0. | uniqueType uniqueNodeLocation missingLocation diff --git a/python/ql/test/library-tests/frameworks/django-orm/dataflow-consistency.expected b/python/ql/test/library-tests/frameworks/django-orm/dataflow-consistency.expected index e8a3027a15c..f70095401c8 100644 --- a/python/ql/test/library-tests/frameworks/django-orm/dataflow-consistency.expected +++ b/python/ql/test/library-tests/frameworks/django-orm/dataflow-consistency.expected @@ -1,40 +1,5 @@ uniqueEnclosingCallable uniqueCallEnclosingCallable -| testapp/orm_form_test.py:7:12:7:43 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_inheritance.py:30:13:30:44 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_inheritance.py:34:25:34:56 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_inheritance.py:35:33:35:64 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_inheritance.py:39:21:39:52 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_inheritance.py:40:33:40:64 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_inheritance.py:118:13:118:44 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_inheritance.py:122:25:122:56 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_inheritance.py:123:33:123:64 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_inheritance.py:127:21:127:52 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_inheritance.py:128:33:128:64 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_security_tests.py:16:12:16:43 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_security_tests.py:17:11:17:31 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_security_tests.py:93:12:93:65 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_security_tests.py:112:12:112:65 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:29:12:29:43 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:43:12:43:43 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:59:12:59:61 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:74:12:74:43 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:90:12:90:43 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:111:12:111:43 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:127:12:127:43 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:128:13:128:44 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:145:12:145:43 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:146:13:146:44 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:162:12:162:43 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:178:12:178:43 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:181:12:181:64 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:207:12:207:43 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:208:12:208:70 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:234:12:234:43 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:235:12:235:95 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:256:12:256:43 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:274:12:274:43 | Attribute() | Call should have one enclosing callable but has 0. | -| testapp/orm_tests.py:295:12:295:43 | Attribute() | Call should have one enclosing callable but has 0. | uniqueType uniqueNodeLocation missingLocation From 5220a8d3f85d462c4e6b31dbccf09676416acb6a Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Tue, 7 Nov 2023 11:30:13 +0100 Subject: [PATCH 094/122] Update python/ql/test/experimental/dataflow/validTest.py Co-authored-by: Taus --- python/ql/test/experimental/dataflow/validTest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/ql/test/experimental/dataflow/validTest.py b/python/ql/test/experimental/dataflow/validTest.py index 929c52e3d58..5e12e7cccc7 100644 --- a/python/ql/test/experimental/dataflow/validTest.py +++ b/python/ql/test/experimental/dataflow/validTest.py @@ -85,4 +85,4 @@ if __name__ == "__main__": # check_tests_valid("module-initialization.test") # check_tests_valid("module-initialization.testOnce") - print("\n🎉 All test passed 🎉") + print("\n🎉 All tests passed 🎉") From 0f31fc7cbe6d7b3062cfd384d5da8dabfd9a446c Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Tue, 7 Nov 2023 12:12:59 +0100 Subject: [PATCH 095/122] C#: Keep only one framework reference nuget package in standalone --- .../DependencyManager.cs | 52 ++++++++++++++----- 1 file changed, 40 insertions(+), 12 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index 30e0c5c0354..e277d58c437 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -82,8 +82,8 @@ namespace Semmle.Extraction.CSharp.DependencyFetching ? new[] { options.SolutionFile } : allNonBinaryFiles.SelectFileNamesByExtension(".sln"); var dllPaths = options.DllDirs.Count == 0 - ? allFiles.SelectFileNamesByExtension(".dll").ToList() - : options.DllDirs.Select(Path.GetFullPath).ToList(); + ? allFiles.SelectFileNamesByExtension(".dll").ToHashSet() + : options.DllDirs.Select(Path.GetFullPath).ToHashSet(); if (options.UseNuGet) { @@ -107,7 +107,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching .RequiredPaths .Select(d => Path.Combine(packageDirectory.DirInfo.FullName, d)) .ToList(); - dllPaths.AddRange(paths); + dllPaths.UnionWith(paths); LogAllUnusedPackages(dependencies); DownloadMissingPackages(allNonBinaryFiles, dllPaths); @@ -205,7 +205,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching } } - private void AddNetFrameworkDlls(List dllPaths) + private void AddNetFrameworkDlls(ISet dllPaths) { // Multiple dotnet framework packages could be present. // The order of the packages is important, we're adding the first one that is present in the nuget cache. @@ -218,13 +218,19 @@ namespace Semmle.Extraction.CSharp.DependencyFetching }; var frameworkPath = packagesInPrioOrder - .Select(GetPackageDirectory) - .FirstOrDefault(dir => dir is not null); + .Select((s, index) => (Index: index, Path: GetPackageDirectory(s))) + .FirstOrDefault(pair => pair.Path is not null); - if (frameworkPath is not null) + if (frameworkPath.Path is not null) { - dllPaths.Add(frameworkPath); - progressMonitor.LogInfo("Found .NET Core/Framework DLLs in NuGet packages. Not adding installation directory."); + dllPaths.Add(frameworkPath.Path); + progressMonitor.LogInfo($"Found .NET Core/Framework DLLs in NuGet packages at {frameworkPath.Path}. Not adding installation directory."); + + for (var i = frameworkPath.Index + 1; i < packagesInPrioOrder.Length; i++) + { + RemoveNugetPackageReference(packagesInPrioOrder[i], dllPaths); + } + return; } @@ -249,7 +255,29 @@ namespace Semmle.Extraction.CSharp.DependencyFetching dllPaths.Add(runtimeLocation); } - private void AddAspNetCoreFrameworkDlls(List dllPaths) + private void RemoveNugetPackageReference(string packagePrefix, ISet dllPaths) + { + if (!options.UseNuGet) + { + return; + } + + var packageFolder = packageDirectory.DirInfo.FullName.ToLowerInvariant(); + if (packageFolder == null) + { + return; + } + + var packagePathPrefix = Path.Combine(packageFolder, packagePrefix.ToLowerInvariant()); + var toRemove = dllPaths.Where(s => s.ToLowerInvariant().StartsWith(packagePathPrefix)); + foreach (var path in toRemove) + { + dllPaths.Remove(path); + progressMonitor.RemovedReference(path); + } + } + + private void AddAspNetCoreFrameworkDlls(ISet dllPaths) { if (!fileContent.IsNewProjectStructureUsed || !fileContent.UseAspNetCoreDlls) { @@ -269,7 +297,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching } } - private void AddMicrosoftWindowsDesktopDlls(List dllPaths) + private void AddMicrosoftWindowsDesktopDlls(ISet dllPaths) { if (GetPackageDirectory("microsoft.windowsdesktop.app.ref") is string windowsDesktopApp) { @@ -628,7 +656,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching assets = assetFiles; } - private void DownloadMissingPackages(List allFiles, List dllPaths) + private void DownloadMissingPackages(List allFiles, ISet dllPaths) { var nugetConfigs = allFiles.SelectFileNamesByName("nuget.config").ToArray(); string? nugetConfig = null; From 9dca6697fbf07be93ef9b89ca00d9495076d4d78 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 7 Nov 2023 11:52:35 +0000 Subject: [PATCH 096/122] C++: Add a testcase that fails to terminate in modulus analysis when we don't have IR operands as SSA variables. --- cpp/ql/test/library-tests/ir/range-analysis/test.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cpp/ql/test/library-tests/ir/range-analysis/test.cpp b/cpp/ql/test/library-tests/ir/range-analysis/test.cpp index 61d17102948..1753431a6df 100644 --- a/cpp/ql/test/library-tests/ir/range-analysis/test.cpp +++ b/cpp/ql/test/library-tests/ir/range-analysis/test.cpp @@ -130,3 +130,13 @@ void test_div(int x) { range(x >> 2); // $ range=>=0 range=<=2 } } + +struct X { int n; }; +void read_argument(const X *); + +void nonterminating_without_operands_as_ssa(X *x) { + read_argument(x); + while (x->n) { + x->n--; + } +} \ No newline at end of file From af7b295c59970d022f6a26c20efc8462145cc998 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 7 Nov 2023 13:01:19 +0100 Subject: [PATCH 097/122] Address review comments --- .../csharp/dataflow/internal/ExternalFlow.qll | 32 +---------------- .../internal/ExternalFlowExtensions.qll | 34 +++++++++++++++++++ .../extensible-predicates.rst | 2 +- go/ql/lib/semmle/go/dataflow/ExternalFlow.qll | 11 +----- .../{ => internal}/ExternalFlowExtensions.qll | 0 .../code/java/dataflow/ExternalFlow.qll | 2 +- .../{ => internal}/ExternalFlowExtensions.qll | 0 7 files changed, 38 insertions(+), 43 deletions(-) create mode 100644 csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlowExtensions.qll rename go/ql/lib/semmle/go/dataflow/{ => internal}/ExternalFlowExtensions.qll (100%) rename java/ql/lib/semmle/code/java/dataflow/{ => internal}/ExternalFlowExtensions.qll (100%) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll index cb1482e34e8..e8113d97d2b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll @@ -87,6 +87,7 @@ */ import csharp +import ExternalFlowExtensions private import AccessPathSyntax private import DataFlowDispatch private import DataFlowPrivate @@ -96,37 +97,6 @@ private import FlowSummaryImpl::Private::External private import FlowSummaryImplSpecific private import codeql.mad.ModelValidation as SharedModelVal -/** - * Holds if a source model exists for the given parameters. - */ -extensible predicate sourceModel( - string namespace, string type, boolean subtypes, string name, string signature, string ext, - string output, string kind, string provenance -); - -/** - * Holds if a sink model exists for the given parameters. - */ -extensible predicate sinkModel( - string namespace, string type, boolean subtypes, string name, string signature, string ext, - string input, string kind, string provenance -); - -/** - * Holds if a summary model exists for the given parameters. - */ -extensible predicate summaryModel( - string namespace, string type, boolean subtypes, string name, string signature, string ext, - string input, string output, string kind, string provenance -); - -/** - * Holds if a neutral model exists for the given parameters. - */ -extensible predicate neutralModel( - string namespace, string type, string name, string signature, string kind, string provenance -); - private predicate relevantNamespace(string namespace) { sourceModel(namespace, _, _, _, _, _, _, _, _) or sinkModel(namespace, _, _, _, _, _, _, _, _) or diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlowExtensions.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlowExtensions.qll new file mode 100644 index 00000000000..3d1f6de268a --- /dev/null +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlowExtensions.qll @@ -0,0 +1,34 @@ +/** + * This module provides extensible predicates for defining MaD models. + */ + +/** + * Holds if a source model exists for the given parameters. + */ +extensible predicate sourceModel( + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string output, string kind, string provenance +); + +/** + * Holds if a sink model exists for the given parameters. + */ +extensible predicate sinkModel( + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string input, string kind, string provenance +); + +/** + * Holds if a summary model exists for the given parameters. + */ +extensible predicate summaryModel( + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string input, string output, string kind, string provenance +); + +/** + * Holds if a neutral model exists for the given parameters. + */ +extensible predicate neutralModel( + string namespace, string type, string name, string signature, string kind, string provenance +); diff --git a/docs/codeql/codeql-language-guides/extensible-predicates.rst b/docs/codeql/codeql-language-guides/extensible-predicates.rst index 2ef077fe056..0ed962df4af 100644 --- a/docs/codeql/codeql-language-guides/extensible-predicates.rst +++ b/docs/codeql/codeql-language-guides/extensible-predicates.rst @@ -22,7 +22,7 @@ About extensible predicates At a high level, there are two main components to using data extensions. The query writer defines one or more extensible predicates in their query libraries. CLI and code scanning users who want to augment these predicates supply one or more extension files whose data gets injected into the extensible predicate during evaluation. The extension files are either stored directly in the repository where the codebase to be analyzed is hosted, or downloaded as CodeQL model packs. -This example of an extensible predicate for a source is taken from the core Java libraries https://github.com/github/codeql/blob/main/java/ql/lib/semmle/code/java/dataflow/ExternalFlowExtensions.qll#L8-L11 +This example of an extensible predicate for a source is taken from the core Java libraries https://github.com/github/codeql/blob/main/java/ql/lib/semmle/code/java/dataflow/internal/ExternalFlowExtensions.qll#L8-L11 .. code-block:: ql diff --git a/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll b/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll index a79e1a6bb05..4b72ca8125a 100644 --- a/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll +++ b/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll @@ -74,7 +74,7 @@ */ private import go -private import ExternalFlowExtensions as Extensions +import internal.ExternalFlowExtensions private import internal.DataFlowPrivate private import internal.FlowSummaryImpl::Private::External private import internal.FlowSummaryImplSpecific @@ -82,15 +82,6 @@ private import internal.AccessPathSyntax private import FlowSummary private import codeql.mad.ModelValidation as SharedModelVal -/** Holds if a source model exists for the given parameters. */ -predicate sourceModel = Extensions::sourceModel/9; - -/** Holds if a sink model exists for the given parameters. */ -predicate sinkModel = Extensions::sinkModel/9; - -/** Holds if a summary model exists for the given parameters. */ -predicate summaryModel = Extensions::summaryModel/10; - /** Holds if `package` have MaD framework coverage. */ private predicate packageHasMaDCoverage(string package) { sourceModel(package, _, _, _, _, _, _, _, _) or diff --git a/go/ql/lib/semmle/go/dataflow/ExternalFlowExtensions.qll b/go/ql/lib/semmle/go/dataflow/internal/ExternalFlowExtensions.qll similarity index 100% rename from go/ql/lib/semmle/go/dataflow/ExternalFlowExtensions.qll rename to go/ql/lib/semmle/go/dataflow/internal/ExternalFlowExtensions.qll diff --git a/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll b/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll index 3a9e1347c97..48ee41630d9 100644 --- a/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll @@ -93,7 +93,7 @@ private import internal.DataFlowPrivate private import internal.FlowSummaryImpl::Private::External private import internal.FlowSummaryImplSpecific as FlowSummaryImplSpecific private import internal.AccessPathSyntax -private import ExternalFlowExtensions as Extensions +private import internal.ExternalFlowExtensions as Extensions private import FlowSummary private import codeql.mad.ModelValidation as SharedModelVal diff --git a/java/ql/lib/semmle/code/java/dataflow/ExternalFlowExtensions.qll b/java/ql/lib/semmle/code/java/dataflow/internal/ExternalFlowExtensions.qll similarity index 100% rename from java/ql/lib/semmle/code/java/dataflow/ExternalFlowExtensions.qll rename to java/ql/lib/semmle/code/java/dataflow/internal/ExternalFlowExtensions.qll From a70d9691da42fab9d4eece982b8319d210ff0384 Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Tue, 7 Nov 2023 13:39:43 +0100 Subject: [PATCH 098/122] C#: Add standalone test with multiple targets --- .../Assemblies.expected | 163 ++++++++++++++++++ .../Assemblies.ql | 15 ++ .../Program.cs | 1 + .../global.json | 5 + .../net48.csproj | 10 ++ .../net70.csproj | 10 ++ .../test.py | 3 + 7 files changed, 207 insertions(+) create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.expected create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.ql create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Program.cs create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/global.json create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/net48.csproj create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/net70.csproj create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/test.py diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.expected b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.expected new file mode 100644 index 00000000000..cd527ec5add --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.expected @@ -0,0 +1,163 @@ +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/Microsoft.CSharp.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/Microsoft.VisualBasic.Core.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/Microsoft.VisualBasic.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/Microsoft.Win32.Primitives.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/Microsoft.Win32.Registry.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.AppContext.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Buffers.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Collections.Concurrent.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Collections.Immutable.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Collections.NonGeneric.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Collections.Specialized.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Collections.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.ComponentModel.Annotations.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.ComponentModel.DataAnnotations.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.ComponentModel.EventBasedAsync.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.ComponentModel.Primitives.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.ComponentModel.TypeConverter.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.ComponentModel.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Configuration.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Console.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Core.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Data.Common.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Data.DataSetExtensions.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Data.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Diagnostics.Contracts.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Diagnostics.Debug.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Diagnostics.DiagnosticSource.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Diagnostics.FileVersionInfo.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Diagnostics.Process.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Diagnostics.StackTrace.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Diagnostics.TextWriterTraceListener.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Diagnostics.Tools.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Diagnostics.TraceSource.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Diagnostics.Tracing.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Drawing.Primitives.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Drawing.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Dynamic.Runtime.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Formats.Asn1.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Formats.Tar.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Globalization.Calendars.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Globalization.Extensions.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Globalization.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.IO.Compression.Brotli.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.IO.Compression.FileSystem.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.IO.Compression.ZipFile.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.IO.Compression.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.IO.FileSystem.AccessControl.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.IO.FileSystem.DriveInfo.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.IO.FileSystem.Primitives.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.IO.FileSystem.Watcher.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.IO.FileSystem.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.IO.IsolatedStorage.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.IO.MemoryMappedFiles.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.IO.Pipes.AccessControl.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.IO.Pipes.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.IO.UnmanagedMemoryStream.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.IO.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Linq.Expressions.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Linq.Parallel.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Linq.Queryable.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Linq.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Memory.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Net.Http.Json.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Net.Http.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Net.HttpListener.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Net.Mail.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Net.NameResolution.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Net.NetworkInformation.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Net.Ping.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Net.Primitives.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Net.Quic.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Net.Requests.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Net.Security.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Net.ServicePoint.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Net.Sockets.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Net.WebClient.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Net.WebHeaderCollection.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Net.WebProxy.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Net.WebSockets.Client.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Net.WebSockets.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Net.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Numerics.Vectors.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Numerics.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.ObjectModel.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Reflection.DispatchProxy.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Reflection.Emit.ILGeneration.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Reflection.Emit.Lightweight.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Reflection.Emit.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Reflection.Extensions.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Reflection.Metadata.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Reflection.Primitives.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Reflection.TypeExtensions.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Reflection.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Resources.Reader.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Resources.ResourceManager.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Resources.Writer.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Runtime.CompilerServices.Unsafe.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Runtime.CompilerServices.VisualC.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Runtime.Extensions.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Runtime.Handles.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Runtime.InteropServices.JavaScript.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Runtime.InteropServices.RuntimeInformation.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Runtime.InteropServices.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Runtime.Intrinsics.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Runtime.Loader.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Runtime.Numerics.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Runtime.Serialization.Formatters.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Runtime.Serialization.Json.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Runtime.Serialization.Primitives.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Runtime.Serialization.Xml.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Runtime.Serialization.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Runtime.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Security.AccessControl.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Security.Claims.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Security.Cryptography.Algorithms.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Security.Cryptography.Cng.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Security.Cryptography.Csp.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Security.Cryptography.Encoding.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Security.Cryptography.OpenSsl.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Security.Cryptography.Primitives.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Security.Cryptography.X509Certificates.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Security.Cryptography.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Security.Principal.Windows.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Security.Principal.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Security.SecureString.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Security.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.ServiceModel.Web.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.ServiceProcess.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Text.Encoding.CodePages.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Text.Encoding.Extensions.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Text.Encoding.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Text.Encodings.Web.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Text.Json.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Text.RegularExpressions.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Threading.Channels.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Threading.Overlapped.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Threading.Tasks.Dataflow.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Threading.Tasks.Extensions.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Threading.Tasks.Parallel.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Threading.Tasks.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Threading.Thread.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Threading.ThreadPool.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Threading.Timer.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Threading.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Transactions.Local.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Transactions.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.ValueTuple.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Web.HttpUtility.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Web.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Windows.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Xml.Linq.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Xml.ReaderWriter.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Xml.Serialization.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Xml.XDocument.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Xml.XPath.XDocument.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Xml.XPath.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Xml.XmlDocument.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Xml.XmlSerializer.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.Xml.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/System.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/WindowsBase.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/mscorlib.dll | +| /microsoft.netcore.app.ref/7.0.2/ref/net7.0/netstandard.dll | diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.ql b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.ql new file mode 100644 index 00000000000..91ee82c1c7a --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.ql @@ -0,0 +1,15 @@ +import csharp + +private string getPath(Assembly a) { + not a.getCompilation().getOutputAssembly() = a and + exists(string s | s = a.getFile().getAbsolutePath() | + result = + s.substring(s.indexOf("GitHub/packages/") + "GitHub/packages/".length() + 16, s.length()) + or + result = s and + not exists(s.indexOf("GitHub/packages/")) + ) +} + +from Assembly a +select getPath(a) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Program.cs b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Program.cs new file mode 100644 index 00000000000..47eee48cc79 --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Program.cs @@ -0,0 +1 @@ +var dummy = "dummy"; \ No newline at end of file diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/global.json b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/global.json new file mode 100644 index 00000000000..1a974fd253e --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "7.0.102" + } +} \ No newline at end of file diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/net48.csproj b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/net48.csproj new file mode 100644 index 00000000000..65bdc7d9050 --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/net48.csproj @@ -0,0 +1,10 @@ + + + + Exe + net48 + enable + enable + + + diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/net70.csproj b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/net70.csproj new file mode 100644 index 00000000000..f02677bf640 --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/net70.csproj @@ -0,0 +1,10 @@ + + + + Exe + net7.0 + enable + enable + + + diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/test.py b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/test.py new file mode 100644 index 00000000000..58074b430b2 --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/test.py @@ -0,0 +1,3 @@ +from create_database_utils import * + +run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=buildless=true", "--extractor-option=cil=false"]) From bbde709b3f02a9b0821806f895ec0f948a104261 Mon Sep 17 00:00:00 2001 From: Alex Denisov Date: Tue, 19 Sep 2023 16:03:30 +0200 Subject: [PATCH 099/122] Swift: upgrade to 5.9.1 --- .../decl/ModuleDecl/ModuleDecl.expected | 4 +- .../ModuleDecl_getAnImportedModule.expected | 2 + .../MethodLookupExpr_getMember.expected | 4 +- .../MethodLookupExpr_getType.expected | 2 +- .../MethodLookupExpr/method_lookups.swift | 2 +- .../test/library-tests/ast/PrintAst.expected | 88 +++++++++---------- .../controlflow/graph/Cfg.expected | 5 +- .../expr/methodlookup/PrintAst.expected | 1 - .../expr/methodlookup/methodlookup.swift | 2 +- swift/third_party/load.bzl | 16 ++-- .../patches/remove-result-of.patch | 30 ------- 11 files changed, 59 insertions(+), 97 deletions(-) delete mode 100644 swift/third_party/swift-llvm-support/patches/remove-result-of.patch diff --git a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl.expected b/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl.expected index dbbc1c70157..37ee373dc83 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl.expected @@ -1,3 +1,3 @@ -| file://:0:0:0:0 | Foo | getModule: | file://:0:0:0:0 | Foo | getNumberOfMembers: | 0 | getInterfaceType: | module | getName: | Foo | getNumberOfInheritedTypes: | 0 | isBuiltinModule: | no | isSystemModule: | no | getNumberOfImportedModules: | 4 | getNumberOfExportedModules: | 1 | +| file://:0:0:0:0 | Foo | getModule: | file://:0:0:0:0 | Foo | getNumberOfMembers: | 0 | getInterfaceType: | module | getName: | Foo | getNumberOfInheritedTypes: | 0 | isBuiltinModule: | no | isSystemModule: | no | getNumberOfImportedModules: | 5 | getNumberOfExportedModules: | 1 | | file://:0:0:0:0 | __ObjC | getModule: | file://:0:0:0:0 | __ObjC | getNumberOfMembers: | 0 | getInterfaceType: | module<__ObjC> | getName: | __ObjC | getNumberOfInheritedTypes: | 0 | isBuiltinModule: | no | isSystemModule: | no | getNumberOfImportedModules: | 1 | getNumberOfExportedModules: | 0 | -| file://:0:0:0:0 | default_module_name | getModule: | file://:0:0:0:0 | default_module_name | getNumberOfMembers: | 0 | getInterfaceType: | module | getName: | default_module_name | getNumberOfInheritedTypes: | 0 | isBuiltinModule: | no | isSystemModule: | no | getNumberOfImportedModules: | 4 | getNumberOfExportedModules: | 0 | +| file://:0:0:0:0 | default_module_name | getModule: | file://:0:0:0:0 | default_module_name | getNumberOfMembers: | 0 | getInterfaceType: | module | getName: | default_module_name | getNumberOfInheritedTypes: | 0 | isBuiltinModule: | no | isSystemModule: | no | getNumberOfImportedModules: | 5 | getNumberOfExportedModules: | 0 | diff --git a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnImportedModule.expected b/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnImportedModule.expected index c711cd8b913..57f89e195bc 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnImportedModule.expected +++ b/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnImportedModule.expected @@ -2,8 +2,10 @@ | file://:0:0:0:0 | Foo | file://:0:0:0:0 | SwiftOnoneSupport | | file://:0:0:0:0 | Foo | file://:0:0:0:0 | _Concurrency | | file://:0:0:0:0 | Foo | file://:0:0:0:0 | _StringProcessing | +| file://:0:0:0:0 | Foo | file://:0:0:0:0 | _SwiftConcurrencyShims | | file://:0:0:0:0 | __ObjC | file://:0:0:0:0 | Swift | | file://:0:0:0:0 | default_module_name | file://:0:0:0:0 | Swift | | file://:0:0:0:0 | default_module_name | file://:0:0:0:0 | SwiftOnoneSupport | | file://:0:0:0:0 | default_module_name | file://:0:0:0:0 | _Concurrency | | file://:0:0:0:0 | default_module_name | file://:0:0:0:0 | _StringProcessing | +| file://:0:0:0:0 | default_module_name | file://:0:0:0:0 | _SwiftConcurrencyShims | diff --git a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getMember.expected b/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getMember.expected index 0b599fe3fe3..a272e0da941 100644 --- a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getMember.expected +++ b/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getMember.expected @@ -16,9 +16,9 @@ | method_lookups.swift:44:11:44:13 | .foo(_:_:) | method_lookups.swift:12:3:12:35 | foo(_:_:) | | method_lookups.swift:47:1:47:1 | Task.init(priority:operation:) | file://:0:0:0:0 | Task.init(priority:operation:) | | method_lookups.swift:48:9:48:11 | .foo(_:_:) | method_lookups.swift:22:3:22:35 | foo(_:_:) | -| method_lookups.swift:49:9:49:11 | .bar() | method_lookups.swift:23:3:23:21 | bar() | +| method_lookups.swift:49:9:49:11 | .bar() | method_lookups.swift:23:15:23:33 | bar() | | method_lookups.swift:50:9:50:9 | Z.init() | method_lookups.swift:26:3:28:3 | Z.init() | | method_lookups.swift:50:9:50:13 | .baz(_:) | method_lookups.swift:24:3:24:21 | baz(_:) | -| method_lookups.swift:52:11:52:13 | .bar() | method_lookups.swift:23:3:23:21 | bar() | +| method_lookups.swift:52:11:52:13 | .bar() | method_lookups.swift:23:15:23:33 | bar() | | method_lookups.swift:53:18:53:18 | Z.init() | method_lookups.swift:26:3:28:3 | Z.init() | | method_lookups.swift:53:23:53:23 | .baz(_:) | method_lookups.swift:24:3:24:21 | baz(_:) | diff --git a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getType.expected index 689812463da..61f37a4b9a9 100644 --- a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getType.expected +++ b/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getType.expected @@ -20,7 +20,7 @@ | method_lookups.swift:44:11:44:13 | .foo(_:_:) | (Int, Int) -> () | | method_lookups.swift:47:1:47:1 | Task.init(priority:operation:) | (TaskPriority?, __owned @escaping @Sendable () async -> ()) -> Task<(), Never> | | method_lookups.swift:48:9:48:11 | .foo(_:_:) | @MainActor (Int, Int) -> () | -| method_lookups.swift:49:9:49:11 | .bar() | @MainActor () -> () | +| method_lookups.swift:49:9:49:11 | .bar() | () -> () | | method_lookups.swift:50:9:50:9 | Z.init() | @MainActor () -> Z | | method_lookups.swift:50:9:50:13 | .baz(_:) | @MainActor (Int) -> () | | method_lookups.swift:52:11:52:13 | .bar() | () -> () | diff --git a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/method_lookups.swift b/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/method_lookups.swift index 5290eaae94d..49c5673fbed 100644 --- a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/method_lookups.swift +++ b/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/method_lookups.swift @@ -20,7 +20,7 @@ actor Y { @MainActor class Z { static func foo(_: Int, _:Int) {} - class func bar() {} + nonisolated class func bar() {} func baz(_: Int) {} init() { diff --git a/swift/ql/test/library-tests/ast/PrintAst.expected b/swift/ql/test/library-tests/ast/PrintAst.expected index c8dc0885e53..1692e7f6232 100644 --- a/swift/ql/test/library-tests/ast/PrintAst.expected +++ b/swift/ql/test/library-tests/ast/PrintAst.expected @@ -3248,51 +3248,49 @@ cfg.swift: # 524| getParam(0): [ParamDecl] continuation # 524| Type = AsyncStream.Continuation # 523| getBody(): [BraceStmt] { ... } -# 525| getElement(0): [BraceStmt] { ... } -# 525| getElement(0): [CallExpr] call to detached(priority:operation:) -# 525| getFunction(): [MethodLookupExpr] .detached(priority:operation:) -# 525| getBase(): [TypeExpr] Task<(), Never>.Type -# 525| getTypeRepr(): [TypeRepr] Task<(), Never> -# 525| getMethodRef(): [DeclRefExpr] detached(priority:operation:) -# 525| getArgument(0): [Argument] priority: default priority -# 525| getExpr(): [DefaultArgumentExpr] default priority -# 525| getArgument(1): [Argument] operation: { ... } -# 525| getExpr(): [ExplicitClosureExpr] { ... } -# 525| getBody(): [BraceStmt] { ... } -# 526| getElement(0): [ForEachStmt] for ... in ... { ... } -# 526| getPattern(): [NamedPattern] i -#-----| getIteratorVar(): [PatternBindingDecl] var ... = ... -# 526| getInit(0): [CallExpr] call to makeIterator() -# 526| getFunction(): [MethodLookupExpr] .makeIterator() -# 526| getBase(): [BinaryExpr] ... ....(_:_:) ... -# 526| getFunction(): [MethodLookupExpr] ....(_:_:) -# 526| getBase(): [TypeExpr] Int.Type -# 526| getTypeRepr(): [TypeRepr] Int -# 526| getMethodRef(): [DeclRefExpr] ...(_:_:) -# 526| getArgument(0): [Argument] : 1 -# 526| getExpr(): [IntegerLiteralExpr] 1 -# 526| getArgument(1): [Argument] : 100 -# 526| getExpr(): [IntegerLiteralExpr] 100 -#-----| getMethodRef(): [DeclRefExpr] makeIterator() -# 526| getPattern(0): [NamedPattern] $i$generator -# 526| getNextCall(): [CallExpr] call to next() -# 526| getFunction(): [MethodLookupExpr] .next() -# 526| getBase(): [DeclRefExpr] $i$generator -# 526| getBase().getFullyConverted(): [InOutExpr] &... -#-----| getMethodRef(): [DeclRefExpr] next() -# 526| getBody(): [BraceStmt] { ... } -# 527| getElement(0): [CallExpr] call to yield(_:) -# 527| getFunction(): [MethodLookupExpr] .yield(_:) -# 527| getBase(): [DeclRefExpr] continuation -# 527| getMethodRef(): [DeclRefExpr] yield(_:) -# 527| getArgument(0): [Argument] : i -# 527| getExpr(): [DeclRefExpr] i -# 529| getElement(1): [CallExpr] call to finish() -# 529| getFunction(): [MethodLookupExpr] .finish() -# 529| getBase(): [DeclRefExpr] continuation -# 529| getMethodRef(): [DeclRefExpr] finish() -# 527| getCapture(0): [CapturedDecl] continuation -# 525| getElement(1): [ReturnStmt] return +# 525| getElement(0): [CallExpr] call to detached(priority:operation:) +# 525| getFunction(): [MethodLookupExpr] .detached(priority:operation:) +# 525| getBase(): [TypeExpr] Task<(), Never>.Type +# 525| getTypeRepr(): [TypeRepr] Task<(), Never> +# 525| getMethodRef(): [DeclRefExpr] detached(priority:operation:) +# 525| getArgument(0): [Argument] priority: default priority +# 525| getExpr(): [DefaultArgumentExpr] default priority +# 525| getArgument(1): [Argument] operation: { ... } +# 525| getExpr(): [ExplicitClosureExpr] { ... } +# 525| getBody(): [BraceStmt] { ... } +# 526| getElement(0): [ForEachStmt] for ... in ... { ... } +# 526| getPattern(): [NamedPattern] i +#-----| getIteratorVar(): [PatternBindingDecl] var ... = ... +# 526| getInit(0): [CallExpr] call to makeIterator() +# 526| getFunction(): [MethodLookupExpr] .makeIterator() +# 526| getBase(): [BinaryExpr] ... ....(_:_:) ... +# 526| getFunction(): [MethodLookupExpr] ....(_:_:) +# 526| getBase(): [TypeExpr] Int.Type +# 526| getTypeRepr(): [TypeRepr] Int +# 526| getMethodRef(): [DeclRefExpr] ...(_:_:) +# 526| getArgument(0): [Argument] : 1 +# 526| getExpr(): [IntegerLiteralExpr] 1 +# 526| getArgument(1): [Argument] : 100 +# 526| getExpr(): [IntegerLiteralExpr] 100 +#-----| getMethodRef(): [DeclRefExpr] makeIterator() +# 526| getPattern(0): [NamedPattern] $i$generator +# 526| getNextCall(): [CallExpr] call to next() +# 526| getFunction(): [MethodLookupExpr] .next() +# 526| getBase(): [DeclRefExpr] $i$generator +# 526| getBase().getFullyConverted(): [InOutExpr] &... +#-----| getMethodRef(): [DeclRefExpr] next() +# 526| getBody(): [BraceStmt] { ... } +# 527| getElement(0): [CallExpr] call to yield(_:) +# 527| getFunction(): [MethodLookupExpr] .yield(_:) +# 527| getBase(): [DeclRefExpr] continuation +# 527| getMethodRef(): [DeclRefExpr] yield(_:) +# 527| getArgument(0): [Argument] : i +# 527| getExpr(): [DeclRefExpr] i +# 529| getElement(1): [CallExpr] call to finish() +# 529| getFunction(): [MethodLookupExpr] .finish() +# 529| getBase(): [DeclRefExpr] continuation +# 529| getMethodRef(): [DeclRefExpr] finish() +# 527| getCapture(0): [CapturedDecl] continuation # 523| getPattern(0): [NamedPattern] stream # 533| getElement(1): [ForEachStmt] for ... in ... { ... } # 533| getPattern(): [NamedPattern] i diff --git a/swift/ql/test/library-tests/controlflow/graph/Cfg.expected b/swift/ql/test/library-tests/controlflow/graph/Cfg.expected index e1e160a6c3b..56439ce6b53 100644 --- a/swift/ql/test/library-tests/controlflow/graph/Cfg.expected +++ b/swift/ql/test/library-tests/controlflow/graph/Cfg.expected @@ -6077,14 +6077,11 @@ cfg.swift: # 525| Task<(), Never>.Type #-----| -> default priority -# 525| return -#-----| return -> exit { ... } (normal) - # 525| .detached(priority:operation:) #-----| -> Task<(), Never>.Type # 525| call to detached(priority:operation:) -#-----| -> return +#-----| -> exit { ... } (normal) # 525| default priority #-----| -> { ... } diff --git a/swift/ql/test/library-tests/elements/expr/methodlookup/PrintAst.expected b/swift/ql/test/library-tests/elements/expr/methodlookup/PrintAst.expected index b56ef3634a8..d511a390341 100644 --- a/swift/ql/test/library-tests/elements/expr/methodlookup/PrintAst.expected +++ b/swift/ql/test/library-tests/elements/expr/methodlookup/PrintAst.expected @@ -226,7 +226,6 @@ methodlookup.swift: # 47| getFunction(): [MethodLookupExpr] .instanceMethod() # 47| getBase(): [DeclRefExpr] baz # 47| getMethodRef(): [DeclRefExpr] instanceMethod() -# 47| getMethodRef().getFullyConverted(): [FunctionConversionExpr] ((Baz) -> @MainActor () -> ()) ... # 47| getElement(2).getFullyConverted(): [AwaitExpr] await ... # 48| getElement(3): [CallExpr] call to { ... } # 48| getFunction(): [CallExpr] call to Baz.instanceMethod() diff --git a/swift/ql/test/library-tests/elements/expr/methodlookup/methodlookup.swift b/swift/ql/test/library-tests/elements/expr/methodlookup/methodlookup.swift index 5ba364ab003..9f382db9941 100644 --- a/swift/ql/test/library-tests/elements/expr/methodlookup/methodlookup.swift +++ b/swift/ql/test/library-tests/elements/expr/methodlookup/methodlookup.swift @@ -14,7 +14,7 @@ actor Bar { @MainActor class Baz { init() {} - func instanceMethod() {} + nonisolated func instanceMethod() {} static func staticMethod() {} class func classMethod() {} } diff --git a/swift/third_party/load.bzl b/swift/third_party/load.bzl index 7c8604e27b5..44665cef951 100644 --- a/swift/third_party/load.bzl +++ b/swift/third_party/load.bzl @@ -1,14 +1,11 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") -# TODO: remove `remove-result-of.patch` once we update to a Swift version containing -# https://github.com/apple/swift/commit/2ed2cea2 -# (probably when updating to 5.9) -_swift_prebuilt_version = "swift-5.8.1-RELEASE.214" +_swift_prebuilt_version = "swift-5.9.1-RELEASE.255" _swift_sha_map = { - "Linux-X64": "009594131d2f6327e0033c4b7b0479a5730427575eb59a81a439fe0e343aa777", - "macOS-ARM64": "304a918e3699d404f57e967eff79b982388d8c5330c2135272c9f3a825920a39", - "macOS-X64": "c763c493e5782869b54887dc72df2aad00d59af7272c6d96377f1debb98741f2", + "Linux-X64": "0d5682d8acbe3ab81c2a0b8dc0dfadc0240895e28722cca6467d2ab71a69e004", + "macOS-ARM64": "ee53def6f89f97ce0882375121629d71fd87a673baa194f4c510920720d7bce6", + "macOS-X64": "61c2879ee89d6796f3b58fada8a5890756f5a8c053597f4faca019d660743d70", } _swift_arch_map = { @@ -23,13 +20,13 @@ _toolchain_info = { platform = "ubuntu2004", suffix = "ubuntu20.04", extension = "tar.gz", - sha = "dd4b04c7f95c4ada4a2aacb66864b1ed20358313aaa4c880dc3974bf1eefa275", + sha = "057f6c0c3c6472b733e4d5bd8f10e83dd8536c1db1d0ec4a1dca414cd023ab0d", ), "macos": struct( platform = "xcode", suffix = "osx", extension = "pkg", - sha = "417d46f73b2e6b5da82ebbc8a5f4979f7187691fd42119157ba56d5a8bc89eda", + sha = "fa4d3a67c4db8d63897e10d52903af40599cc351e8a73d6f5a4eb3cfd07c4605", ), } @@ -131,7 +128,6 @@ def load_dependencies(workspace_name): patches = [ "@%s//swift/third_party/swift-llvm-support:patches/%s.patch" % (workspace_name, patch_name) for patch_name in ( - "remove-result-of", "remove-redundant-operators", "add-constructor-to-Compilation", ) diff --git a/swift/third_party/swift-llvm-support/patches/remove-result-of.patch b/swift/third_party/swift-llvm-support/patches/remove-result-of.patch deleted file mode 100644 index ab3f2155b67..00000000000 --- a/swift/third_party/swift-llvm-support/patches/remove-result-of.patch +++ /dev/null @@ -1,30 +0,0 @@ -`std::result_of` was removed in C++20, but is still used in the Swift headers. We can't -remove it from there before prebuilding, as that is still done with C++14, but we can -replace it with `std::invoke_result` for compiling the extractor. - -diff --git a/include/swift/Basic/RelativePointer.h b/include/swift/Basic/RelativePointer.h -index 73f91262afa..bdaa304c804 100644 ---- a/include/swift/Basic/RelativePointer.h -+++ b/include/swift/Basic/RelativePointer.h -@@ -551,7 +551,7 @@ public: - } - - template -- typename std::result_of::type operator()(ArgTy... arg) const { -+ typename std::invoke_result::type operator()(ArgTy... arg) const { - #if SWIFT_PTRAUTH - void *ptr = this->super::getWithoutCast(); - return reinterpret_cast(ptrauth_sign_unauthenticated( -diff --git a/include/swift/Basic/STLExtras.h b/include/swift/Basic/STLExtras.h -index 7fa3d0c8890..6bc891a9b63 100644 ---- a/include/swift/Basic/STLExtras.h -+++ b/include/swift/Basic/STLExtras.h -@@ -405,7 +405,7 @@ class OptionalTransformIterator { - typename std::iterator_traits::reference; - - using ResultReference = -- typename std::result_of::type; -+ typename std::invoke_result::type; - - public: - /// Used to indicate when the current iterator has already been From 33de177feaed64b13149f1293f9807f69cf2dae1 Mon Sep 17 00:00:00 2001 From: Alex Denisov Date: Wed, 20 Sep 2023 11:04:39 +0200 Subject: [PATCH 100/122] Swift: extract SingleValueStmtExpr --- swift/extractor/infra/SwiftTagTraits.h | 2 +- .../extractor/translators/ExprTranslator.cpp | 7 +++++ swift/extractor/translators/ExprTranslator.h | 1 + swift/ql/.generated.list | 14 +++++---- swift/ql/.gitattributes | 4 +++ swift/ql/lib/codeql/swift/elements.qll | 1 + .../elements/expr/SingleValueStmtExpr.qll | 4 +++ .../expr/SingleValueStmtExprConstructor.qll | 4 +++ .../codeql/swift/generated/ParentChild.qll | 20 +++++++++++++ swift/ql/lib/codeql/swift/generated/Raw.qll | 13 ++++++++ swift/ql/lib/codeql/swift/generated/Synth.qll | 30 +++++++++++++++++-- .../swift/generated/SynthConstructors.qll | 1 + .../generated/expr/SingleValueStmtExpr.qll | 24 +++++++++++++++ swift/ql/lib/swift.dbscheme | 6 ++++ .../SingleValueStmtExpr/MISSING_SOURCE.txt | 4 +++ .../CONSISTENCY/CfgConsistency.expected | 5 ++++ swift/schema.py | 7 +++++ 17 files changed, 139 insertions(+), 8 deletions(-) create mode 100644 swift/ql/lib/codeql/swift/elements/expr/SingleValueStmtExpr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/expr/SingleValueStmtExprConstructor.qll create mode 100644 swift/ql/lib/codeql/swift/generated/expr/SingleValueStmtExpr.qll create mode 100644 swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/library-tests/dataflow/flowsources/CONSISTENCY/CfgConsistency.expected diff --git a/swift/extractor/infra/SwiftTagTraits.h b/swift/extractor/infra/SwiftTagTraits.h index 5066205db6e..bd3042be2e8 100644 --- a/swift/extractor/infra/SwiftTagTraits.h +++ b/swift/extractor/infra/SwiftTagTraits.h @@ -205,7 +205,7 @@ MAP(swift::Expr, ExprTag) MAP(swift::CopyExpr, void) // TODO (introduced in 5.9) MAP(swift::ConsumeExpr, void) // TODO (introduced in 5.9) MAP(swift::MaterializePackExpr, void) // TODO (introduced in 5.9) - MAP(swift::SingleValueStmtExpr, void) // TODO (introduced in 5.9) + MAP(swift::SingleValueStmtExpr, SingleValueStmtExprTag) #endif MAP(swift::Decl, DeclTag) diff --git a/swift/extractor/translators/ExprTranslator.cpp b/swift/extractor/translators/ExprTranslator.cpp index 3274c49675e..de24e27226a 100644 --- a/swift/extractor/translators/ExprTranslator.cpp +++ b/swift/extractor/translators/ExprTranslator.cpp @@ -636,4 +636,11 @@ codeql::RegexLiteralExpr ExprTranslator::translateRegexLiteralExpr( return entry; } +codeql::SingleValueStmtExpr ExprTranslator::translateSingleValueStmtExpr( + const swift::SingleValueStmtExpr& expr) { + auto entry = createExprEntry(expr); + entry.stmt = dispatcher.fetchLabel(expr.getStmt()); + return entry; +} + } // namespace codeql diff --git a/swift/extractor/translators/ExprTranslator.h b/swift/extractor/translators/ExprTranslator.h index 504f66999cf..fa3a1ef3c86 100644 --- a/swift/extractor/translators/ExprTranslator.h +++ b/swift/extractor/translators/ExprTranslator.h @@ -119,6 +119,7 @@ class ExprTranslator : public AstTranslatorBase { codeql::AppliedPropertyWrapperExpr translateAppliedPropertyWrapperExpr( const swift::AppliedPropertyWrapperExpr& expr); codeql::RegexLiteralExpr translateRegexLiteralExpr(const swift::RegexLiteralExpr& expr); + codeql::SingleValueStmtExpr translateSingleValueStmtExpr(const swift::SingleValueStmtExpr& expr); private: void fillClosureExpr(const swift::AbstractClosureExpr& expr, codeql::ClosureExpr& entry); diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index 00d6f0fe319..62d3bbd358f 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -193,6 +193,8 @@ lib/codeql/swift/elements/expr/RegexLiteralExprConstructor.qll 7bf1bdba26d38e839 lib/codeql/swift/elements/expr/SelfApplyExpr.qll 986b3ff9833aac59facecea185517c006264c5011191b4c7f31317a20926467a f0349628f9ead822783e09e56e0721f939bfb7f59c8661e6155b5a7d113c26f3 lib/codeql/swift/elements/expr/SequenceExpr.qll 813360eff6a312e39c7b6c49928477679a3f32314badf3383bf6204690a280e4 3b2d06ac54746033a90319463243f2d0f17265c7f1573cbfedbdca3fb7063fd2 lib/codeql/swift/elements/expr/SequenceExprConstructor.qll 5a15ede013bb017a85092aff35dd2f4f1fb025e0e4e9002ac6e65b8e27c27a0b 05d6c0e2fa80bbd088b67c039520fe74ef4aa7c946f75c86207af125e7e2e6b4 +lib/codeql/swift/elements/expr/SingleValueStmtExpr.qll 9eb08ce070e3a48ed1ff11e884492c27daeae2613377d4e20a08abba917fe068 d0b293c68f5562ff27ff6bb894723e3965348530fe4924b1e492a78a9f2911d7 +lib/codeql/swift/elements/expr/SingleValueStmtExprConstructor.qll 578ff8a344c6e5d1b5d2aae9f7ca0c8205e4aab42cd1f73d00720d7c34a9c407 68c78198f1c280cb1566299b747da2b359fa9d4273e4f167693986af41450b3c lib/codeql/swift/elements/expr/StringLiteralExprConstructor.qll 49de92f9566459609f4a05b7bf9b776e3a420a7316151e1d3d4ec4c5471dcffb 4a7474d3782b74a098afe48599faee2c35c88c1c7a47d4b94f79d39921cd4a1f lib/codeql/swift/elements/expr/StringToPointerExpr.qll c30a9f184de3f395183751a826c59e5e3605560f738315cead3bf89a49cfe23c 6f6710f7ac709102b0f3240dcd779baf5da00d2e7a547d19291600bc405c5a54 lib/codeql/swift/elements/expr/StringToPointerExprConstructor.qll 138dd290fff168d00af79f78d9d39a1940c2a1654afd0ec02e36be86cebef970 66f7385721789915b6d5311665b89feff9469707fab630a6dcbf742980857fd9 @@ -360,7 +362,7 @@ lib/codeql/swift/elements/type/UnresolvedTypeConstructor.qll 76c34ca055a017a0fa7 lib/codeql/swift/elements/type/VariadicSequenceTypeConstructor.qll 0d1d2328a3b5e503a883e7e6d7efd0ca5e7f2633abead9e4c94a9f98ed3cb223 69bff81c1b9413949eacb9298d2efb718ea808e68364569a1090c9878c4af856 lib/codeql/swift/elements/type/WeakStorageType.qll 7c07739cfc1459f068f24fef74838428128054adf611504d22532e4a156073e7 9c968414d7cc8d672f3754bced5d4f83f43a6d7872d0d263d79ff60483e1f996 lib/codeql/swift/elements/type/WeakStorageTypeConstructor.qll d88b031ef44d6de14b3ddcff2eb47b53dbd11550c37250ff2edb42e5d21ec3e9 26d855c33492cf7a118e439f7baeed0e5425cfaf058b1dcc007eca7ed765c897 -lib/codeql/swift/elements.qll 3df0060edd2b2030f4e4d7d5518afe0073d798474d9b1d6185d833bec63ca8bd 3df0060edd2b2030f4e4d7d5518afe0073d798474d9b1d6185d833bec63ca8bd +lib/codeql/swift/elements.qll 08d1b17dc7cd5f438b1fc606098b027051e0f3cc1adde2c22c2e5bb83f7cf66f 08d1b17dc7cd5f438b1fc606098b027051e0f3cc1adde2c22c2e5bb83f7cf66f lib/codeql/swift/generated/AstNode.qll 02ca56d82801f942ae6265c6079d92ccafdf6b532f6bcebd98a04029ddf696e4 6216fda240e45bd4302fa0cf0f08f5f945418b144659264cdda84622b0420aa2 lib/codeql/swift/generated/AvailabilityInfo.qll 1e38e7f52ccbcecd4dd088eae15c482d87911682dabb426332cc0e207fc6bf2f 7c6640530cdbece90d4172e8d6cfd119656860da08bb61ed4ef3a6757723994f lib/codeql/swift/generated/AvailabilitySpec.qll fb1255f91bb5e41ad4e9c675a2efbc50d0fb366ea2de68ab7eebd177b0795309 144e0c2e7d6c62ecee43325f7f26dcf437881edf0b75cc1bc898c6c4b61fdeaf @@ -376,12 +378,12 @@ lib/codeql/swift/generated/KeyPathComponent.qll c79c7bc04fc1426992ab472eedc1a20a lib/codeql/swift/generated/Locatable.qll be20967d48a34cdba126fe298606e0adc11697831f097acba9c52a0b7ce9983e 8aa01bc376614abbc3209e25785c72f86c9b4e94bb5f471a4a0677fedaec4f61 lib/codeql/swift/generated/Location.qll c5793987e77812059a28254dadee29bfe9b38153c0399fbb1bf6a2f5c237fdab 6e6d8802b021e36bbaad81845657769dd48a798ea33080ada05e9818a20b38f7 lib/codeql/swift/generated/OtherAvailabilitySpec.qll 0e26a203b26ff0581b7396b0c6d1606feec5cc32477f676585cdec4911af91c5 0e26a203b26ff0581b7396b0c6d1606feec5cc32477f676585cdec4911af91c5 -lib/codeql/swift/generated/ParentChild.qll 680cbaa7cad7b8c33b7cf3b60aba7013facdbc5601b5076a6f38560fd284f2e8 af472eeaca6bd32848cb2de647ff015053f9fb7c54c1eca18f91fcc6ea8ad7b7 +lib/codeql/swift/generated/ParentChild.qll 235b7536d6c6b027871a1308463352e4486e2e66ed179e737bf1ac35944c2aa9 9e0d24028afd81836e8fee80cf679f39b18526c95a375b4acb2f1db0508200bf lib/codeql/swift/generated/PlatformVersionAvailabilitySpec.qll f82d9ca416fe8bd59b5531b65b1c74c9f317b3297a6101544a11339a1cffce38 7f5c6d3309e66c134107afe55bae76dfc9a72cb7cdd6d4c3706b6b34cee09fa0 lib/codeql/swift/generated/PureSynthConstructors.qll 173c0dd59396a1de26fe870e3bc2766c46de689da2a4d8807cb62023bbce1a98 173c0dd59396a1de26fe870e3bc2766c46de689da2a4d8807cb62023bbce1a98 -lib/codeql/swift/generated/Raw.qll 59a847c009d682dfceb72f33bb54d6cf6da589e59a386450bb5fba310a4170e7 ed02d96d3bfc998a105b8f34e6a92d966e6c3db5c581872a53ac5db6904e5fab -lib/codeql/swift/generated/Synth.qll 551fdf7e4b53f9ee1314d1bb42c2638cf82f45bfa1f40a635dfa7b6072e4418c 9ab178464700a19951fc5285acacda4913addee81515d8e072b3d7055935a814 -lib/codeql/swift/generated/SynthConstructors.qll 2f801bd8b0db829b0253cd459ed3253c1fdfc55dce68ebc53e7fec138ef0aca4 2f801bd8b0db829b0253cd459ed3253c1fdfc55dce68ebc53e7fec138ef0aca4 +lib/codeql/swift/generated/Raw.qll 4ca40f7a46d77fcc9c435f4d2a18209eb4e67518850f7de1be1646833a5512eb 7245ef236d9adfe4e87a2a5124b3295a57baa03bf51a283678f508a398a41eae +lib/codeql/swift/generated/Synth.qll 0e299d5d910589d82be11fc503640d425ea20478b8a5802347fbc575075dd53c dc87a4f03bb1ead4ef6676e6fd1b53b38b9ec6904b5113f24eb7a778f089490a +lib/codeql/swift/generated/SynthConstructors.qll e6533af43a95a90e6e07add5720c83f436aa2a24c445080ba5e8cbc6417b973f e6533af43a95a90e6e07add5720c83f436aa2a24c445080ba5e8cbc6417b973f lib/codeql/swift/generated/UnknownFile.qll 0fcf9beb8de79440bcdfff4bb6ab3dd139bd273e6c32754e05e6a632651e85f6 0fcf9beb8de79440bcdfff4bb6ab3dd139bd273e6c32754e05e6a632651e85f6 lib/codeql/swift/generated/UnknownLocation.qll e50efefa02a0ec1ff635a00951b5924602fc8cab57e5756e4a039382c69d3882 e50efefa02a0ec1ff635a00951b5924602fc8cab57e5756e4a039382c69d3882 lib/codeql/swift/generated/UnspecifiedElement.qll bfe0dfb0a34fe8f7501710809cdfb82dc423bece9f3bcd23ebfb0e3ecb7aadf7 cdf7553ba0324a7670f6a275ff99bad96498f7363234f829533a27b6e97892f4 @@ -531,6 +533,7 @@ lib/codeql/swift/generated/expr/RebindSelfInInitializerExpr.qll 66d4cbf211cae63a lib/codeql/swift/generated/expr/RegexLiteralExpr.qll a11eb6f6ce7cebb35ab9ff51eae85f272980140814d7e6bded454069457a1312 bdb4bb65c9f4e187cf743ed13c0213bb7e55db9cc3adeae2169df5e32b003940 lib/codeql/swift/generated/expr/SelfApplyExpr.qll c0815a4d6d4f08bd0c7bc170fa817ebcb2328c937c8ef16391fb0da71aff17ae 0979f035e8d4b54e93f17163a4df3c2aa65f23d56c491fa72376887e3e5c10ac lib/codeql/swift/generated/expr/SequenceExpr.qll 62301b2e4c76de4820c6deef0ee95c8b328ed14ba8eac70aa10cc8fb0f3c5ace feb960c796ea517abc9587bd76f7ae9aabfd9a6b0984fe2d8380e803b002eede +lib/codeql/swift/generated/expr/SingleValueStmtExpr.qll 0284863f7b5a41281e2b2395ee5a6f6f5fccc684c3f6951a652a46f096a251ec f0efdc5ab9f939ce6e8152aeae2327bf6868e0f29ba5541eb42f7d2e1085b30c lib/codeql/swift/generated/expr/StringLiteralExpr.qll f420c5cd51a223b6f98177147967266e0094a5718ba2d57ae2d3acbb64bbb4b6 30d6dab2a93fd95e652a700902c4d106fecfce13880c2ece565de29f2504bedf lib/codeql/swift/generated/expr/StringToPointerExpr.qll ef69b570aa90697d438f5787a86797955b4b2f985960b5859a7bd13b9ecb9cd3 ef69b570aa90697d438f5787a86797955b4b2f985960b5859a7bd13b9ecb9cd3 lib/codeql/swift/generated/expr/SubscriptExpr.qll 8a2bf1f0ded1888546791e0e59b969267f0352223e2abeb38e91dfa2144a38ae 009566ef61689d14844730235b0e0c31ee01e95e2002cf7272cbabc97539dce9 @@ -832,6 +835,7 @@ test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/Property test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getWrappedValue.ql 208153f062b04bec13a860b64ea51c1d531597140d81a6d4598294dc9f8649a2 dfaea19e1075c02dfc0366fac8fd2edfae8dde06308730eb462c54be5b571129 test/extractor-tests/generated/expr/RebindSelfInInitializerExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 test/extractor-tests/generated/expr/RegexLiteralExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 +test/extractor-tests/generated/expr/SingleValueStmtExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 test/extractor-tests/generated/expr/StringLiteralExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 test/extractor-tests/generated/expr/SubscriptExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 test/extractor-tests/generated/expr/SuperRefExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 diff --git a/swift/ql/.gitattributes b/swift/ql/.gitattributes index a1e00251e80..9539c4d8b2d 100644 --- a/swift/ql/.gitattributes +++ b/swift/ql/.gitattributes @@ -195,6 +195,8 @@ /lib/codeql/swift/elements/expr/SelfApplyExpr.qll linguist-generated /lib/codeql/swift/elements/expr/SequenceExpr.qll linguist-generated /lib/codeql/swift/elements/expr/SequenceExprConstructor.qll linguist-generated +/lib/codeql/swift/elements/expr/SingleValueStmtExpr.qll linguist-generated +/lib/codeql/swift/elements/expr/SingleValueStmtExprConstructor.qll linguist-generated /lib/codeql/swift/elements/expr/StringLiteralExprConstructor.qll linguist-generated /lib/codeql/swift/elements/expr/StringToPointerExpr.qll linguist-generated /lib/codeql/swift/elements/expr/StringToPointerExprConstructor.qll linguist-generated @@ -533,6 +535,7 @@ /lib/codeql/swift/generated/expr/RegexLiteralExpr.qll linguist-generated /lib/codeql/swift/generated/expr/SelfApplyExpr.qll linguist-generated /lib/codeql/swift/generated/expr/SequenceExpr.qll linguist-generated +/lib/codeql/swift/generated/expr/SingleValueStmtExpr.qll linguist-generated /lib/codeql/swift/generated/expr/StringLiteralExpr.qll linguist-generated /lib/codeql/swift/generated/expr/StringToPointerExpr.qll linguist-generated /lib/codeql/swift/generated/expr/SubscriptExpr.qll linguist-generated @@ -834,6 +837,7 @@ /test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getWrappedValue.ql linguist-generated /test/extractor-tests/generated/expr/RebindSelfInInitializerExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/RegexLiteralExpr/MISSING_SOURCE.txt linguist-generated +/test/extractor-tests/generated/expr/SingleValueStmtExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/StringLiteralExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/SubscriptExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/SuperRefExpr/MISSING_SOURCE.txt linguist-generated diff --git a/swift/ql/lib/codeql/swift/elements.qll b/swift/ql/lib/codeql/swift/elements.qll index 7c75c11c976..321b6cfa1fb 100644 --- a/swift/ql/lib/codeql/swift/elements.qll +++ b/swift/ql/lib/codeql/swift/elements.qll @@ -160,6 +160,7 @@ import codeql.swift.elements.expr.ProtocolMetatypeToObjectExpr import codeql.swift.elements.expr.RebindSelfInInitializerExpr import codeql.swift.elements.expr.RegexLiteralExpr import codeql.swift.elements.expr.SequenceExpr +import codeql.swift.elements.expr.SingleValueStmtExpr import codeql.swift.elements.expr.StringLiteralExpr import codeql.swift.elements.expr.StringToPointerExpr import codeql.swift.elements.expr.SubscriptExpr diff --git a/swift/ql/lib/codeql/swift/elements/expr/SingleValueStmtExpr.qll b/swift/ql/lib/codeql/swift/elements/expr/SingleValueStmtExpr.qll new file mode 100644 index 00000000000..821ffa8c129 --- /dev/null +++ b/swift/ql/lib/codeql/swift/elements/expr/SingleValueStmtExpr.qll @@ -0,0 +1,4 @@ +// generated by codegen/codegen.py, remove this comment if you wish to edit this file +private import codeql.swift.generated.expr.SingleValueStmtExpr + +class SingleValueStmtExpr extends Generated::SingleValueStmtExpr { } diff --git a/swift/ql/lib/codeql/swift/elements/expr/SingleValueStmtExprConstructor.qll b/swift/ql/lib/codeql/swift/elements/expr/SingleValueStmtExprConstructor.qll new file mode 100644 index 00000000000..72ca112012d --- /dev/null +++ b/swift/ql/lib/codeql/swift/elements/expr/SingleValueStmtExprConstructor.qll @@ -0,0 +1,4 @@ +// generated by codegen/codegen.py, remove this comment if you wish to edit this file +private import codeql.swift.generated.Raw + +predicate constructSingleValueStmtExpr(Raw::SingleValueStmtExpr id) { any() } diff --git a/swift/ql/lib/codeql/swift/generated/ParentChild.qll b/swift/ql/lib/codeql/swift/generated/ParentChild.qll index 0467fa10caf..0e98a9e889a 100644 --- a/swift/ql/lib/codeql/swift/generated/ParentChild.qll +++ b/swift/ql/lib/codeql/swift/generated/ParentChild.qll @@ -1745,6 +1745,24 @@ private module Impl { ) } + private Element getImmediateChildOfSingleValueStmtExpr( + SingleValueStmtExpr e, int index, string partialPredicateCall + ) { + exists(int b, int bExpr, int n, int nStmt | + b = 0 and + bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and + n = bExpr and + nStmt = n + 1 and + ( + none() + or + result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) + or + index = n and result = e.getStmt() and partialPredicateCall = "Stmt()" + ) + ) + } + private Element getImmediateChildOfSuperRefExpr( SuperRefExpr e, int index, string partialPredicateCall ) { @@ -4977,6 +4995,8 @@ private module Impl { or result = getImmediateChildOfSequenceExpr(e, index, partialAccessor) or + result = getImmediateChildOfSingleValueStmtExpr(e, index, partialAccessor) + or result = getImmediateChildOfSuperRefExpr(e, index, partialAccessor) or result = getImmediateChildOfTapExpr(e, index, partialAccessor) diff --git a/swift/ql/lib/codeql/swift/generated/Raw.qll b/swift/ql/lib/codeql/swift/generated/Raw.qll index 00693018cf1..d5b087cf574 100644 --- a/swift/ql/lib/codeql/swift/generated/Raw.qll +++ b/swift/ql/lib/codeql/swift/generated/Raw.qll @@ -1571,6 +1571,19 @@ module Raw { Expr getElement(int index) { sequence_expr_elements(this, index, result) } } + /** + * INTERNAL: Do not use. + * An expression that may wrap a statement which produces a single value. + */ + class SingleValueStmtExpr extends @single_value_stmt_expr, Expr { + override string toString() { result = "SingleValueStmtExpr" } + + /** + * Gets the statement of this single value statement expression. + */ + Stmt getStmt() { single_value_stmt_exprs(this, result) } + } + /** * INTERNAL: Do not use. */ diff --git a/swift/ql/lib/codeql/swift/generated/Synth.qll b/swift/ql/lib/codeql/swift/generated/Synth.qll index fdbadffcd33..d10b7b2d1b6 100644 --- a/swift/ql/lib/codeql/swift/generated/Synth.qll +++ b/swift/ql/lib/codeql/swift/generated/Synth.qll @@ -579,6 +579,10 @@ module Synth { * INTERNAL: Do not use. */ TSequenceExpr(Raw::SequenceExpr id) { constructSequenceExpr(id) } or + /** + * INTERNAL: Do not use. + */ + TSingleValueStmtExpr(Raw::SingleValueStmtExpr id) { constructSingleValueStmtExpr(id) } or /** * INTERNAL: Do not use. */ @@ -1172,8 +1176,8 @@ module Synth { TOneWayExpr or TOpaqueValueExpr or TOpenExistentialExpr or TOptionalEvaluationExpr or TOtherInitializerRefExpr or TOverloadedDeclRefExpr or TPropertyWrapperValuePlaceholderExpr or TRebindSelfInInitializerExpr or TSequenceExpr or - TSuperRefExpr or TTapExpr or TTupleElementExpr or TTupleExpr or TTypeExpr or - TUnresolvedDeclRefExpr or TUnresolvedDotExpr or TUnresolvedMemberExpr or + TSingleValueStmtExpr or TSuperRefExpr or TTapExpr or TTupleElementExpr or TTupleExpr or + TTypeExpr or TUnresolvedDeclRefExpr or TUnresolvedDotExpr or TUnresolvedMemberExpr or TUnresolvedPatternExpr or TUnresolvedSpecializeExpr or TVarargExpansionExpr; /** @@ -2373,6 +2377,15 @@ module Synth { cached TSequenceExpr convertSequenceExprFromRaw(Raw::Element e) { result = TSequenceExpr(e) } + /** + * INTERNAL: Do not use. + * Converts a raw element to a synthesized `TSingleValueStmtExpr`, if possible. + */ + cached + TSingleValueStmtExpr convertSingleValueStmtExprFromRaw(Raw::Element e) { + result = TSingleValueStmtExpr(e) + } + /** * INTERNAL: Do not use. * Converts a raw element to a synthesized `TStringLiteralExpr`, if possible. @@ -3656,6 +3669,8 @@ module Synth { or result = convertSequenceExprFromRaw(e) or + result = convertSingleValueStmtExprFromRaw(e) + or result = convertSuperRefExprFromRaw(e) or result = convertTapExprFromRaw(e) @@ -5178,6 +5193,15 @@ module Synth { cached Raw::Element convertSequenceExprToRaw(TSequenceExpr e) { e = TSequenceExpr(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TSingleValueStmtExpr` to a raw DB element, if possible. + */ + cached + Raw::Element convertSingleValueStmtExprToRaw(TSingleValueStmtExpr e) { + e = TSingleValueStmtExpr(result) + } + /** * INTERNAL: Do not use. * Converts a synthesized `TStringLiteralExpr` to a raw DB element, if possible. @@ -6461,6 +6485,8 @@ module Synth { or result = convertSequenceExprToRaw(e) or + result = convertSingleValueStmtExprToRaw(e) + or result = convertSuperRefExprToRaw(e) or result = convertTapExprToRaw(e) diff --git a/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll b/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll index 524d39f20a2..58c4d9fc155 100644 --- a/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll +++ b/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll @@ -127,6 +127,7 @@ import codeql.swift.elements.expr.ProtocolMetatypeToObjectExprConstructor import codeql.swift.elements.expr.RebindSelfInInitializerExprConstructor import codeql.swift.elements.expr.RegexLiteralExprConstructor import codeql.swift.elements.expr.SequenceExprConstructor +import codeql.swift.elements.expr.SingleValueStmtExprConstructor import codeql.swift.elements.expr.StringLiteralExprConstructor import codeql.swift.elements.expr.StringToPointerExprConstructor import codeql.swift.elements.expr.SubscriptExprConstructor diff --git a/swift/ql/lib/codeql/swift/generated/expr/SingleValueStmtExpr.qll b/swift/ql/lib/codeql/swift/generated/expr/SingleValueStmtExpr.qll new file mode 100644 index 00000000000..6e5814cc917 --- /dev/null +++ b/swift/ql/lib/codeql/swift/generated/expr/SingleValueStmtExpr.qll @@ -0,0 +1,24 @@ +// generated by codegen/codegen.py +private import codeql.swift.generated.Synth +private import codeql.swift.generated.Raw +import codeql.swift.elements.expr.Expr +import codeql.swift.elements.stmt.Stmt + +module Generated { + /** + * An expression that may wrap a statement which produces a single value. + */ + class SingleValueStmtExpr extends Synth::TSingleValueStmtExpr, Expr { + override string getAPrimaryQlClass() { result = "SingleValueStmtExpr" } + + /** + * Gets the statement of this single value statement expression. + */ + Stmt getStmt() { + result = + Synth::convertStmtFromRaw(Synth::convertSingleValueStmtExprToRaw(this) + .(Raw::SingleValueStmtExpr) + .getStmt()) + } + } +} diff --git a/swift/ql/lib/swift.dbscheme b/swift/ql/lib/swift.dbscheme index 7c17e1f4b2d..fcc7b497930 100644 --- a/swift/ql/lib/swift.dbscheme +++ b/swift/ql/lib/swift.dbscheme @@ -764,6 +764,7 @@ arguments( //dir=expr | @property_wrapper_value_placeholder_expr | @rebind_self_in_initializer_expr | @sequence_expr +| @single_value_stmt_expr | @super_ref_expr | @tap_expr | @tuple_element_expr @@ -1143,6 +1144,11 @@ sequence_expr_elements( //dir=expr int element: @expr_or_none ref ); +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + super_ref_exprs( //dir=expr unique int id: @super_ref_expr, int self: @var_decl_or_none ref diff --git a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/MISSING_SOURCE.txt b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/MISSING_SOURCE.txt new file mode 100644 index 00000000000..25daf3d23a2 --- /dev/null +++ b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/MISSING_SOURCE.txt @@ -0,0 +1,4 @@ +// generated by codegen/codegen.py + +After a source file is added in this directory and codegen/codegen.py is run again, test queries +will appear and this file will be deleted diff --git a/swift/ql/test/library-tests/dataflow/flowsources/CONSISTENCY/CfgConsistency.expected b/swift/ql/test/library-tests/dataflow/flowsources/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 00000000000..eca8be91c8b --- /dev/null +++ b/swift/ql/test/library-tests/dataflow/flowsources/CONSISTENCY/CfgConsistency.expected @@ -0,0 +1,5 @@ +deadEnd +| alamofire.swift:469:9:469:9 | stream | +| alamofire.swift:484:9:484:9 | stream | +| alamofire.swift:499:9:499:9 | stream | +| alamofire.swift:514:9:514:9 | stream | diff --git a/swift/schema.py b/swift/schema.py index c46a2e4552d..36d12f88898 100644 --- a/swift/schema.py +++ b/swift/schema.py @@ -1239,3 +1239,10 @@ class ParameterizedProtocolType(Type): class AbiSafeConversionExpr(ImplicitConversionExpr): pass + + +class SingleValueStmtExpr(Expr): + """ + An expression that may wrap a statement which produces a single value. + """ + stmt: Stmt | child From 2b7ce23653035c9f5da52493cfee0fed71bcce56 Mon Sep 17 00:00:00 2001 From: Alex Denisov Date: Tue, 31 Oct 2023 11:23:53 +0100 Subject: [PATCH 101/122] Swlft: add database upgrade scripts --- .../old.dbscheme | 2642 +++++++++++++++++ .../swift.dbscheme | 2636 ++++++++++++++++ .../unspecified_elements.ql | 13 + .../upgrade.properties | 5 + .../old.dbscheme | 2636 ++++++++++++++++ .../swift.dbscheme | 2642 +++++++++++++++++ .../upgrade.properties | 2 + 7 files changed, 10576 insertions(+) create mode 100644 swift/downgrades/fcc7b497930add320fabeed9b228b264bc847ae6/old.dbscheme create mode 100644 swift/downgrades/fcc7b497930add320fabeed9b228b264bc847ae6/swift.dbscheme create mode 100644 swift/downgrades/fcc7b497930add320fabeed9b228b264bc847ae6/unspecified_elements.ql create mode 100644 swift/downgrades/fcc7b497930add320fabeed9b228b264bc847ae6/upgrade.properties create mode 100644 swift/ql/lib/upgrades/7c17e1f4b2d30f2da05bfa667c621ddd418eb151/old.dbscheme create mode 100644 swift/ql/lib/upgrades/7c17e1f4b2d30f2da05bfa667c621ddd418eb151/swift.dbscheme create mode 100644 swift/ql/lib/upgrades/7c17e1f4b2d30f2da05bfa667c621ddd418eb151/upgrade.properties diff --git a/swift/downgrades/fcc7b497930add320fabeed9b228b264bc847ae6/old.dbscheme b/swift/downgrades/fcc7b497930add320fabeed9b228b264bc847ae6/old.dbscheme new file mode 100644 index 00000000000..fcc7b497930 --- /dev/null +++ b/swift/downgrades/fcc7b497930add320fabeed9b228b264bc847ae6/old.dbscheme @@ -0,0 +1,2642 @@ +// generated by codegen/codegen.py + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @callable +| @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +@availability_spec = + @other_availability_spec +| @platform_version_availability_spec +; + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +other_availability_specs( + unique int id: @other_availability_spec +); + +platform_version_availability_specs( + unique int id: @platform_version_availability_spec, + string platform: string ref, + string version: string ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unresolved_type_conversion_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @l_value_type +| @module_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_float_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @opaque_type_archetype_type +| @opened_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +opened_archetype_types( //dir=type + unique int id: @opened_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/downgrades/fcc7b497930add320fabeed9b228b264bc847ae6/swift.dbscheme b/swift/downgrades/fcc7b497930add320fabeed9b228b264bc847ae6/swift.dbscheme new file mode 100644 index 00000000000..7c17e1f4b2d --- /dev/null +++ b/swift/downgrades/fcc7b497930add320fabeed9b228b264bc847ae6/swift.dbscheme @@ -0,0 +1,2636 @@ +// generated by codegen/codegen.py + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @callable +| @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +@availability_spec = + @other_availability_spec +| @platform_version_availability_spec +; + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +other_availability_specs( + unique int id: @other_availability_spec +); + +platform_version_availability_specs( + unique int id: @platform_version_availability_spec, + string platform: string ref, + string version: string ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unresolved_type_conversion_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @l_value_type +| @module_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_float_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @opaque_type_archetype_type +| @opened_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +opened_archetype_types( //dir=type + unique int id: @opened_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/downgrades/fcc7b497930add320fabeed9b228b264bc847ae6/unspecified_elements.ql b/swift/downgrades/fcc7b497930add320fabeed9b228b264bc847ae6/unspecified_elements.ql new file mode 100644 index 00000000000..9fb0658b0a4 --- /dev/null +++ b/swift/downgrades/fcc7b497930add320fabeed9b228b264bc847ae6/unspecified_elements.ql @@ -0,0 +1,13 @@ +// Converts SingleValueStmtExprs into UnspecifiedElements +class Element extends @element { + string toString() { none() } +} + +from Element e, string property, string error +where + single_value_stmt_exprs(e, _) and + property = "" and + error = "Removed SingleValueStmtExpr during the database downgrade" + or + unspecified_elements(e, property, error) +select e, property, error diff --git a/swift/downgrades/fcc7b497930add320fabeed9b228b264bc847ae6/upgrade.properties b/swift/downgrades/fcc7b497930add320fabeed9b228b264bc847ae6/upgrade.properties new file mode 100644 index 00000000000..a1e122b7e54 --- /dev/null +++ b/swift/downgrades/fcc7b497930add320fabeed9b228b264bc847ae6/upgrade.properties @@ -0,0 +1,5 @@ +description: Removing SingleValueStmtExpr +compatibility: partial + +unspecified_elements.rel: run unspecified_elements.ql +single_value_stmt_exprs.rel: delete diff --git a/swift/ql/lib/upgrades/7c17e1f4b2d30f2da05bfa667c621ddd418eb151/old.dbscheme b/swift/ql/lib/upgrades/7c17e1f4b2d30f2da05bfa667c621ddd418eb151/old.dbscheme new file mode 100644 index 00000000000..7c17e1f4b2d --- /dev/null +++ b/swift/ql/lib/upgrades/7c17e1f4b2d30f2da05bfa667c621ddd418eb151/old.dbscheme @@ -0,0 +1,2636 @@ +// generated by codegen/codegen.py + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @callable +| @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +@availability_spec = + @other_availability_spec +| @platform_version_availability_spec +; + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +other_availability_specs( + unique int id: @other_availability_spec +); + +platform_version_availability_specs( + unique int id: @platform_version_availability_spec, + string platform: string ref, + string version: string ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unresolved_type_conversion_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @l_value_type +| @module_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_float_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @opaque_type_archetype_type +| @opened_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +opened_archetype_types( //dir=type + unique int id: @opened_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/ql/lib/upgrades/7c17e1f4b2d30f2da05bfa667c621ddd418eb151/swift.dbscheme b/swift/ql/lib/upgrades/7c17e1f4b2d30f2da05bfa667c621ddd418eb151/swift.dbscheme new file mode 100644 index 00000000000..fcc7b497930 --- /dev/null +++ b/swift/ql/lib/upgrades/7c17e1f4b2d30f2da05bfa667c621ddd418eb151/swift.dbscheme @@ -0,0 +1,2642 @@ +// generated by codegen/codegen.py + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @callable +| @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +@availability_spec = + @other_availability_spec +| @platform_version_availability_spec +; + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +other_availability_specs( + unique int id: @other_availability_spec +); + +platform_version_availability_specs( + unique int id: @platform_version_availability_spec, + string platform: string ref, + string version: string ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unresolved_type_conversion_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @l_value_type +| @module_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_float_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @opaque_type_archetype_type +| @opened_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +opened_archetype_types( //dir=type + unique int id: @opened_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/ql/lib/upgrades/7c17e1f4b2d30f2da05bfa667c621ddd418eb151/upgrade.properties b/swift/ql/lib/upgrades/7c17e1f4b2d30f2da05bfa667c621ddd418eb151/upgrade.properties new file mode 100644 index 00000000000..9e2cde77abe --- /dev/null +++ b/swift/ql/lib/upgrades/7c17e1f4b2d30f2da05bfa667c621ddd418eb151/upgrade.properties @@ -0,0 +1,2 @@ +description: Added SingleValueStmtExpr +compatibility: full From 7ea8f88d47686551b4dd9ca86f5b9caac0ea15e2 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Tue, 7 Nov 2023 14:52:37 +0100 Subject: [PATCH 102/122] C#: Allow exe and dll files for dotnet test to start with any character. --- csharp/tools/tracing-config.lua | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/csharp/tools/tracing-config.lua b/csharp/tools/tracing-config.lua index bfc146b76ea..55f803c5adb 100644 --- a/csharp/tools/tracing-config.lua +++ b/csharp/tools/tracing-config.lua @@ -80,16 +80,15 @@ function RegisterExtractorPack(id) end end - -- for `dotnet test`, we should not append `-p:UseSharedCompilation=false` to the command line - -- if an `exe` or `dll` is passed as an argument as the call is forwarded to vstest. - if testMatch and (arg:match('%.exe$') or arg:match('%.dll')) then - match = false - break - end - -- we have found a sub-command, ignore all strings that look like sub-command names from now on inSubCommandPosition = false end + -- for `dotnet test`, we should not append `-p:UseSharedCompilation=false` to the command line + -- if an `exe` or `dll` is passed as an argument as the call is forwarded to vstest. + if testMatch and (arg:match('%.exe$') or arg:match('%.dll')) then + match = false + break + end -- if we see a separator to `dotnet run`, inject just prior to the existing separator if arg == '--' then dotnetRunNeedsSeparator = false From f2ca52d951b77b3303ff3edd858e9f3f7c45e57a Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 7 Nov 2023 14:03:01 +0100 Subject: [PATCH 103/122] Java/C++: Move range util backEdge predicate to shared pack. --- .../new/internal/semantic/SemanticCFG.qll | 3 -- .../semantic/SemanticExprSpecific.qll | 2 -- .../new/internal/semantic/SemanticSSA.qll | 33 ------------------- .../semantic/analysis/RangeAnalysisImpl.qll | 4 +-- .../code/java/dataflow/RangeAnalysis.qll | 12 ++++--- .../semmle/code/java/dataflow/RangeUtils.qll | 16 +++------ .../codeql/rangeanalysis/RangeAnalysis.qll | 16 ++++++--- .../rangeanalysis/internal/RangeUtils.qll | 33 +++++++++++++++++++ 8 files changed, 58 insertions(+), 61 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticCFG.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticCFG.qll index 333edc46b6e..5123434a35c 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticCFG.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticCFG.qll @@ -12,9 +12,6 @@ class SemBasicBlock extends Specific::BasicBlock { /** Holds if this block (transitively) dominates `otherblock`. */ final predicate bbDominates(SemBasicBlock otherBlock) { Specific::bbDominates(this, otherBlock) } - /** Holds if this block has dominance information. */ - final predicate hasDominanceInformation() { Specific::hasDominanceInformation(this) } - /** Gets an expression that is evaluated in this basic block. */ final SemExpr getAnExpr() { result.getBasicBlock() = this } diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExprSpecific.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExprSpecific.qll index a92361ece17..e9c55d22647 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExprSpecific.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExprSpecific.qll @@ -199,8 +199,6 @@ module SemanticExprConfig { dominator.dominates(dominated) } - predicate hasDominanceInformation(BasicBlock block) { any() } - private predicate id(Cpp::Locatable x, Cpp::Locatable y) { x = y } private predicate idOf(Cpp::Locatable x, int y) = equivalenceRelation(id/2)(x, y) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticSSA.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticSSA.qll index 677bfd22abc..0bbfc2998af 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticSSA.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticSSA.qll @@ -63,36 +63,3 @@ class SemSsaReadPositionBlock extends SemSsaReadPosition { SemExpr getAnExpr() { result = this.getBlock().getAnExpr() } } - -/** - * Holds if `inp` is an input to `phi` along a back edge. - */ -predicate semBackEdge(SemSsaPhiNode phi, SemSsaVariable inp, SemSsaReadPositionPhiInputEdge edge) { - edge.phiInput(phi, inp) and - // Conservatively assume that every edge is a back edge if we don't have dominance information. - ( - phi.getBasicBlock().bbDominates(edge.getOrigBlock()) or - irreducibleSccEdge(edge.getOrigBlock(), phi.getBasicBlock()) or - not edge.getOrigBlock().hasDominanceInformation() - ) -} - -/** - * Holds if the edge from b1 to b2 is part of a multiple-entry cycle in an irreducible control flow - * graph. - * - * An ireducible control flow graph is one where the usual dominance-based back edge detection does - * not work, because there is a cycle with multiple entry points, meaning there are - * mutually-reachable basic blocks where neither dominates the other. For such a graph, we first - * remove all detectable back-edges using the normal condition that the predecessor block is - * dominated by the successor block, then mark all edges in a cycle in the resulting graph as back - * edges. - */ -private predicate irreducibleSccEdge(SemBasicBlock b1, SemBasicBlock b2) { - trimmedEdge(b1, b2) and trimmedEdge+(b2, b1) -} - -private predicate trimmedEdge(SemBasicBlock pred, SemBasicBlock succ) { - pred.getASuccessor() = succ and - not succ.bbDominates(pred) -} diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/RangeAnalysisImpl.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/RangeAnalysisImpl.qll index 85e5e45174a..cae491a1609 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/RangeAnalysisImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/RangeAnalysisImpl.qll @@ -72,6 +72,8 @@ module Sem implements Semantic { class BasicBlock = SemBasicBlock; + BasicBlock getABasicBlockSuccessor(BasicBlock bb) { result = bb.getASuccessor() } + class Guard = SemGuard; predicate implies_v2 = semImplies_v2/4; @@ -100,8 +102,6 @@ module Sem implements Semantic { class SsaReadPositionBlock = SemSsaReadPositionBlock; - predicate backEdge = semBackEdge/3; - predicate conversionCannotOverflow(Type fromType, Type toType) { SemanticType::conversionCannotOverflow(fromType, toType) } diff --git a/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll b/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll index ee614517872..6224dd83ac0 100644 --- a/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll +++ b/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll @@ -211,7 +211,11 @@ module Sem implements Semantic { class BasicBlock = J::BasicBlock; - class Guard extends GL::Guard { + BasicBlock getABasicBlockSuccessor(BasicBlock bb) { result = bb.getABBSuccessor() } + + final private class FinalGuard = GL::Guard; + + class Guard extends FinalGuard { Expr asExpr() { result = this } } @@ -261,6 +265,8 @@ module Sem implements Semantic { class SsaReadPositionPhiInputEdge extends SsaReadPosition instanceof SsaReadPos::SsaReadPositionPhiInputEdge { + BasicBlock getOrigBlock() { result = super.getOrigBlock() } + predicate phiInput(SsaPhiNode phi, SsaVariable inp) { super.phiInput(phi, inp) } } @@ -268,10 +274,6 @@ module Sem implements Semantic { BasicBlock getBlock() { result = super.getBlock() } } - predicate backEdge(SsaPhiNode phi, SsaVariable inp, SsaReadPositionPhiInputEdge edge) { - RU::backEdge(phi, inp, edge) - } - predicate conversionCannotOverflow = safeCast/2; } diff --git a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll index 1336caac654..00db539cc5e 100644 --- a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll +++ b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll @@ -7,6 +7,10 @@ private import SSA private import semmle.code.java.controlflow.internal.GuardsLogic private import semmle.code.java.dataflow.internal.rangeanalysis.SsaReadPositionCommon private import semmle.code.java.Constants +private import semmle.code.java.dataflow.RangeAnalysis +private import codeql.rangeanalysis.internal.RangeUtils + +private predicate backEdge = MakeUtils::backEdge/3; /** * Holds if `v` is an input to `phi` that is not along a back edge, and the @@ -181,18 +185,6 @@ Expr ssaRead(SsaVariable v, int delta) { result.(AssignExpr).getSource() = ssaRead(v, delta) } -/** - * Holds if `inp` is an input to `phi` along a back edge. - */ -predicate backEdge(SsaPhiNode phi, SsaVariable inp, SsaReadPositionPhiInputEdge edge) { - edge.phiInput(phi, inp) and - // Conservatively assume that every edge is a back edge if we don't have dominance information. - ( - phi.getBasicBlock().bbDominates(edge.getOrigBlock()) or - not hasDominanceInformation(edge.getOrigBlock()) - ) -} - /** * Holds if `guard` directly controls the position `controlled` with the * value `testIsTrue`. diff --git a/shared/rangeanalysis/codeql/rangeanalysis/RangeAnalysis.qll b/shared/rangeanalysis/codeql/rangeanalysis/RangeAnalysis.qll index f957761ce7b..1fe31196a59 100644 --- a/shared/rangeanalysis/codeql/rangeanalysis/RangeAnalysis.qll +++ b/shared/rangeanalysis/codeql/rangeanalysis/RangeAnalysis.qll @@ -142,7 +142,13 @@ signature module Semantic { Expr getBranchExpr(boolean branch); } - class BasicBlock; + class BasicBlock { + /** Holds if this block (transitively) dominates `otherblock`. */ + predicate bbDominates(BasicBlock otherBlock); + } + + /** Gets an immediate successor of basic block `bb`, if any. */ + BasicBlock getABasicBlockSuccessor(BasicBlock bb); class Guard { string toString(); @@ -176,6 +182,8 @@ signature module Semantic { class SsaVariable { Expr getAUse(); + + BasicBlock getBasicBlock(); } class SsaPhiNode extends SsaVariable; @@ -189,6 +197,8 @@ signature module Semantic { } class SsaReadPositionPhiInputEdge extends SsaReadPosition { + BasicBlock getOrigBlock(); + predicate phiInput(SsaPhiNode phi, SsaVariable inp); } @@ -196,8 +206,6 @@ signature module Semantic { BasicBlock getBlock(); } - predicate backEdge(SsaPhiNode phi, SsaVariable inp, SsaReadPositionPhiInputEdge edge); - predicate conversionCannotOverflow(Type fromType, Type toType); } @@ -928,7 +936,7 @@ module RangeStage< origdelta = D::fromFloat(0) and reason = TSemNoReason() | - if Sem::backEdge(phi, inp, edge) + if backEdge(phi, inp, edge) then fromBackEdge = true and ( diff --git a/shared/rangeanalysis/codeql/rangeanalysis/internal/RangeUtils.qll b/shared/rangeanalysis/codeql/rangeanalysis/internal/RangeUtils.qll index 3a471aa2c38..7b8c74fcbcc 100644 --- a/shared/rangeanalysis/codeql/rangeanalysis/internal/RangeUtils.qll +++ b/shared/rangeanalysis/codeql/rangeanalysis/internal/RangeUtils.qll @@ -34,4 +34,37 @@ module MakeUtils { or result.(Lang::CopyValueExpr).getOperand() = ssaRead(v, delta) } + + /** + * Holds if `inp` is an input to `phi` along a back edge. + */ + predicate backEdge( + Lang::SsaPhiNode phi, Lang::SsaVariable inp, Lang::SsaReadPositionPhiInputEdge edge + ) { + edge.phiInput(phi, inp) and + ( + phi.getBasicBlock().bbDominates(edge.getOrigBlock()) or + irreducibleSccEdge(edge.getOrigBlock(), phi.getBasicBlock()) + ) + } + + /** + * Holds if the edge from b1 to b2 is part of a multiple-entry cycle in an irreducible control flow + * graph. Or if the edge is part of a cycle in unreachable code. + * + * An irreducible control flow graph is one where the usual dominance-based back edge detection does + * not work, because there is a cycle with multiple entry points, meaning there are + * mutually-reachable basic blocks where neither dominates the other. For such a graph, we first + * remove all detectable back-edges using the normal condition that the predecessor block is + * dominated by the successor block, then mark all edges in a cycle in the resulting graph as back + * edges. + */ + private predicate irreducibleSccEdge(Lang::BasicBlock b1, Lang::BasicBlock b2) { + trimmedEdge(b1, b2) and trimmedEdge+(b2, b1) + } + + private predicate trimmedEdge(Lang::BasicBlock pred, Lang::BasicBlock succ) { + Lang::getABasicBlockSuccessor(pred) = succ and + not succ.bbDominates(pred) + } } From 12cba7909b297ef0039acb10f6106c8451809169 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 7 Nov 2023 15:06:11 +0100 Subject: [PATCH 104/122] Java/C++: Move range util guard-controls predicates to shared pack. --- .../new/internal/semantic/SemanticGuard.qll | 28 -------- .../semantic/analysis/RangeAnalysisImpl.qll | 4 -- .../semantic/analysis/SignAnalysisCommon.qll | 6 +- .../code/java/dataflow/RangeAnalysis.qll | 10 +-- .../semmle/code/java/dataflow/RangeUtils.qll | 71 +++---------------- .../codeql/rangeanalysis/ModulusAnalysis.qll | 6 +- .../codeql/rangeanalysis/RangeAnalysis.qll | 12 ++-- .../rangeanalysis/internal/RangeUtils.qll | 26 +++++++ 8 files changed, 50 insertions(+), 113 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticGuard.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticGuard.qll index e7f77c31486..14755d59f5b 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticGuard.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticGuard.qll @@ -35,32 +35,4 @@ predicate semImplies_v2(SemGuard g1, boolean b1, SemGuard g2, boolean b2) { Specific::implies_v2(g1, b1, g2, b2) } -/** - * Holds if `guard` directly controls the position `controlled` with the - * value `testIsTrue`. - */ -pragma[nomagic] -predicate semGuardDirectlyControlsSsaRead( - SemGuard guard, SemSsaReadPosition controlled, boolean testIsTrue -) { - guard.directlyControls(controlled.(SemSsaReadPositionBlock).getBlock(), testIsTrue) - or - exists(SemSsaReadPositionPhiInputEdge controlledEdge | controlledEdge = controlled | - guard.directlyControls(controlledEdge.getOrigBlock(), testIsTrue) or - guard.hasBranchEdge(controlledEdge.getOrigBlock(), controlledEdge.getPhiBlock(), testIsTrue) - ) -} - -/** - * Holds if `guard` controls the position `controlled` with the value `testIsTrue`. - */ -predicate semGuardControlsSsaRead(SemGuard guard, SemSsaReadPosition controlled, boolean testIsTrue) { - semGuardDirectlyControlsSsaRead(guard, controlled, testIsTrue) - or - exists(SemGuard guard0, boolean testIsTrue0 | - semImplies_v2(guard0, testIsTrue0, guard, testIsTrue) and - semGuardControlsSsaRead(guard0, controlled, testIsTrue0) - ) -} - SemGuard semGetComparisonGuard(SemRelationalExpr e) { result = Specific::comparisonGuard(e) } diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/RangeAnalysisImpl.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/RangeAnalysisImpl.qll index cae491a1609..e8b8bde758a 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/RangeAnalysisImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/RangeAnalysisImpl.qll @@ -78,10 +78,6 @@ module Sem implements Semantic { predicate implies_v2 = semImplies_v2/4; - predicate guardDirectlyControlsSsaRead = semGuardDirectlyControlsSsaRead/3; - - predicate guardControlsSsaRead = semGuardControlsSsaRead/3; - class Type = SemType; class IntegerType = SemIntegerType; diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/SignAnalysisCommon.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/SignAnalysisCommon.qll index fff53b99cf6..c79172d74d0 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/SignAnalysisCommon.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/SignAnalysisCommon.qll @@ -294,7 +294,7 @@ module SignAnalysis Utils> { ) { exists(boolean testIsTrue, SemRelationalExpr comp | pos.hasReadOfVar(v) and - semGuardControlsSsaRead(semGetComparisonGuard(comp), pos, testIsTrue) and + guardControlsSsaRead(semGetComparisonGuard(comp), pos, testIsTrue) and not unknownSign(lowerbound) | testIsTrue = true and @@ -318,7 +318,7 @@ module SignAnalysis Utils> { ) { exists(boolean testIsTrue, SemRelationalExpr comp | pos.hasReadOfVar(v) and - semGuardControlsSsaRead(semGetComparisonGuard(comp), pos, testIsTrue) and + guardControlsSsaRead(semGetComparisonGuard(comp), pos, testIsTrue) and not unknownSign(upperbound) | testIsTrue = true and @@ -343,7 +343,7 @@ module SignAnalysis Utils> { private predicate eqBound(SemExpr eqbound, SemSsaVariable v, SemSsaReadPosition pos, boolean isEq) { exists(SemGuard guard, boolean testIsTrue, boolean polarity, SemExpr e | pos.hasReadOfVar(pragma[only_bind_into](v)) and - semGuardControlsSsaRead(guard, pragma[only_bind_into](pos), testIsTrue) and + guardControlsSsaRead(guard, pragma[only_bind_into](pos), testIsTrue) and e = ssaRead(pragma[only_bind_into](v), D::fromInt(0)) and guard.isEquality(eqbound, e, polarity) and isEq = polarity.booleanXor(testIsTrue).booleanNot() and diff --git a/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll b/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll index 6224dd83ac0..0fd07fe0258 100644 --- a/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll +++ b/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll @@ -223,14 +223,6 @@ module Sem implements Semantic { GL::implies_v2(g1, b1, g2, b2) } - predicate guardDirectlyControlsSsaRead(Guard guard, SsaReadPosition controlled, boolean testIsTrue) { - RU::guardDirectlyControlsSsaRead(guard, controlled, testIsTrue) - } - - predicate guardControlsSsaRead(Guard guard, SsaReadPosition controlled, boolean testIsTrue) { - RU::guardControlsSsaRead(guard, controlled, testIsTrue) - } - class Type = J::Type; class IntegerType extends J::IntegralType { @@ -267,6 +259,8 @@ module Sem implements Semantic { { BasicBlock getOrigBlock() { result = super.getOrigBlock() } + BasicBlock getPhiBlock() { result = super.getPhiBlock() } + predicate phiInput(SsaPhiNode phi, SsaVariable inp) { super.phiInput(phi, inp) } } diff --git a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll index 00db539cc5e..718c7c2175e 100644 --- a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll +++ b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll @@ -10,7 +10,15 @@ private import semmle.code.java.Constants private import semmle.code.java.dataflow.RangeAnalysis private import codeql.rangeanalysis.internal.RangeUtils -private predicate backEdge = MakeUtils::backEdge/3; +private module U = MakeUtils; + +private predicate backEdge = U::backEdge/3; + +predicate ssaRead = U::ssaRead/2; + +predicate guardDirectlyControlsSsaRead = U::guardDirectlyControlsSsaRead/3; + +predicate guardControlsSsaRead = U::guardControlsSsaRead/3; /** * Holds if `v` is an input to `phi` that is not along a back edge, and the @@ -149,67 +157,6 @@ class ConstantStringExpr extends Expr { string getStringValue() { constantStringExpr(this, result) } } -bindingset[f] -private predicate okInt(float f) { -2.pow(31) <= f and f <= 2.pow(31) - 1 } - -/** - * Gets an expression that equals `v - d`. - */ -Expr ssaRead(SsaVariable v, int delta) { - result = v.getAUse() and delta = 0 - or - exists(int d1, ConstantIntegerExpr c | - result.(AddExpr).hasOperands(ssaRead(v, d1), c) and - delta = d1 - c.getIntValue() and - okInt(d1.(float) - c.getIntValue().(float)) - ) - or - exists(SubExpr sub, int d1, ConstantIntegerExpr c | - result = sub and - sub.getLeftOperand() = ssaRead(v, d1) and - sub.getRightOperand() = c and - delta = d1 + c.getIntValue() and - okInt(d1.(float) + c.getIntValue().(float)) - ) - or - v.(SsaExplicitUpdate).getDefiningExpr().(PreIncExpr) = result and delta = 0 - or - v.(SsaExplicitUpdate).getDefiningExpr().(PreDecExpr) = result and delta = 0 - or - v.(SsaExplicitUpdate).getDefiningExpr().(PostIncExpr) = result and delta = 1 // x++ === ++x - 1 - or - v.(SsaExplicitUpdate).getDefiningExpr().(PostDecExpr) = result and delta = -1 // x-- === --x + 1 - or - v.(SsaExplicitUpdate).getDefiningExpr().(Assignment) = result and delta = 0 - or - result.(AssignExpr).getSource() = ssaRead(v, delta) -} - -/** - * Holds if `guard` directly controls the position `controlled` with the - * value `testIsTrue`. - */ -predicate guardDirectlyControlsSsaRead(Guard guard, SsaReadPosition controlled, boolean testIsTrue) { - guard.directlyControls(controlled.(SsaReadPositionBlock).getBlock(), testIsTrue) - or - exists(SsaReadPositionPhiInputEdge controlledEdge | controlledEdge = controlled | - guard.directlyControls(controlledEdge.getOrigBlock(), testIsTrue) or - guard.hasBranchEdge(controlledEdge.getOrigBlock(), controlledEdge.getPhiBlock(), testIsTrue) - ) -} - -/** - * Holds if `guard` controls the position `controlled` with the value `testIsTrue`. - */ -predicate guardControlsSsaRead(Guard guard, SsaReadPosition controlled, boolean testIsTrue) { - guardDirectlyControlsSsaRead(guard, controlled, testIsTrue) - or - exists(Guard guard0, boolean testIsTrue0 | - implies_v2(guard0, testIsTrue0, guard, testIsTrue) and - guardControlsSsaRead(guard0, controlled, testIsTrue0) - ) -} - /** * Gets a condition that tests whether `v` equals `e + delta`. * diff --git a/shared/rangeanalysis/codeql/rangeanalysis/ModulusAnalysis.qll b/shared/rangeanalysis/codeql/rangeanalysis/ModulusAnalysis.qll index ee8a79237a0..ea2f2fb63c7 100644 --- a/shared/rangeanalysis/codeql/rangeanalysis/ModulusAnalysis.qll +++ b/shared/rangeanalysis/codeql/rangeanalysis/ModulusAnalysis.qll @@ -17,6 +17,8 @@ module ModulusAnalysis< LocationSig Location, Semantic Sem, DeltaSig D, BoundSig Bounds, UtilSig U> { + private import internal.RangeUtils::MakeUtils + bindingset[pos, v] pragma[inline_late] private predicate hasReadOfVarInlineLate(Sem::SsaReadPosition pos, Sem::SsaVariable v) { @@ -35,7 +37,7 @@ module ModulusAnalysis< exists(Sem::Guard guard, boolean testIsTrue | hasReadOfVarInlineLate(pos, v) and guard = U::semEqFlowCond(v, e, D::fromInt(delta), true, testIsTrue) and - Sem::guardDirectlyControlsSsaRead(guard, pos, testIsTrue) + guardDirectlyControlsSsaRead(guard, pos, testIsTrue) ) } @@ -107,7 +109,7 @@ module ModulusAnalysis< exists(Sem::Guard guard, boolean testIsTrue | pos.hasReadOfVar(v) and guard = moduloCheck(v, val, mod, testIsTrue) and - Sem::guardControlsSsaRead(guard, pos, testIsTrue) + guardControlsSsaRead(guard, pos, testIsTrue) ) } diff --git a/shared/rangeanalysis/codeql/rangeanalysis/RangeAnalysis.qll b/shared/rangeanalysis/codeql/rangeanalysis/RangeAnalysis.qll index 1fe31196a59..93758dedca7 100644 --- a/shared/rangeanalysis/codeql/rangeanalysis/RangeAnalysis.qll +++ b/shared/rangeanalysis/codeql/rangeanalysis/RangeAnalysis.qll @@ -160,14 +160,12 @@ signature module Semantic { predicate directlyControls(BasicBlock controlled, boolean branch); predicate isEquality(Expr e1, Expr e2, boolean polarity); + + predicate hasBranchEdge(BasicBlock bb1, BasicBlock bb2, boolean branch); } predicate implies_v2(Guard g1, boolean b1, Guard g2, boolean b2); - predicate guardDirectlyControlsSsaRead(Guard guard, SsaReadPosition controlled, boolean testIsTrue); - - predicate guardControlsSsaRead(Guard guard, SsaReadPosition controlled, boolean testIsTrue); - class Type; class IntegerType extends Type { @@ -199,6 +197,8 @@ signature module Semantic { class SsaReadPositionPhiInputEdge extends SsaReadPosition { BasicBlock getOrigBlock(); + BasicBlock getPhiBlock(); + predicate phiInput(SsaPhiNode phi, SsaVariable inp); } @@ -699,7 +699,7 @@ module RangeStage< exists(Sem::Guard guard, boolean testIsTrue | pos.hasReadOfVar(v) and guard = boundFlowCond(v, e, delta, upper, testIsTrue) and - Sem::guardDirectlyControlsSsaRead(guard, pos, testIsTrue) and + guardDirectlyControlsSsaRead(guard, pos, testIsTrue) and reason = TSemCondReason(guard) ) } @@ -712,7 +712,7 @@ module RangeStage< exists(Sem::Guard guard, boolean testIsTrue | pos.hasReadOfVar(v) and guard = semEqFlowCond(v, e, delta, false, testIsTrue) and - Sem::guardDirectlyControlsSsaRead(guard, pos, testIsTrue) and + guardDirectlyControlsSsaRead(guard, pos, testIsTrue) and reason = TSemCondReason(guard) ) } diff --git a/shared/rangeanalysis/codeql/rangeanalysis/internal/RangeUtils.qll b/shared/rangeanalysis/codeql/rangeanalysis/internal/RangeUtils.qll index 7b8c74fcbcc..9c9046734b3 100644 --- a/shared/rangeanalysis/codeql/rangeanalysis/internal/RangeUtils.qll +++ b/shared/rangeanalysis/codeql/rangeanalysis/internal/RangeUtils.qll @@ -35,6 +35,32 @@ module MakeUtils { result.(Lang::CopyValueExpr).getOperand() = ssaRead(v, delta) } + /** + * Holds if `guard` directly controls the position `controlled` with the + * value `testIsTrue`. + */ + pragma[nomagic] + predicate guardDirectlyControlsSsaRead(Lang::Guard guard, Lang::SsaReadPosition controlled, boolean testIsTrue) { + guard.directlyControls(controlled.(Lang::SsaReadPositionBlock).getBlock(), testIsTrue) + or + exists(Lang::SsaReadPositionPhiInputEdge controlledEdge | controlledEdge = controlled | + guard.directlyControls(controlledEdge.getOrigBlock(), testIsTrue) or + guard.hasBranchEdge(controlledEdge.getOrigBlock(), controlledEdge.getPhiBlock(), testIsTrue) + ) + } + + /** + * Holds if `guard` controls the position `controlled` with the value `testIsTrue`. + */ + predicate guardControlsSsaRead(Lang::Guard guard, Lang::SsaReadPosition controlled, boolean testIsTrue) { + guardDirectlyControlsSsaRead(guard, controlled, testIsTrue) + or + exists(Lang::Guard guard0, boolean testIsTrue0 | + Lang::implies_v2(guard0, testIsTrue0, guard, testIsTrue) and + guardControlsSsaRead(guard0, controlled, testIsTrue0) + ) + } + /** * Holds if `inp` is an input to `phi` along a back edge. */ From 21cb4909cf6036adc3e0e79a024ebbd55f947c18 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Tue, 7 Nov 2023 15:26:55 +0100 Subject: [PATCH 105/122] C#: Add integration test. --- .../posix-only/dotnet_test/dotnet_test.csproj | 6 +++++- csharp/ql/integration-tests/posix-only/dotnet_test/test.py | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test/dotnet_test.csproj b/csharp/ql/integration-tests/posix-only/dotnet_test/dotnet_test.csproj index 968726df756..0556c69acc8 100644 --- a/csharp/ql/integration-tests/posix-only/dotnet_test/dotnet_test.csproj +++ b/csharp/ql/integration-tests/posix-only/dotnet_test/dotnet_test.csproj @@ -3,7 +3,6 @@ net7.0 enable - false @@ -14,4 +13,9 @@ + + + + + diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test/test.py b/csharp/ql/integration-tests/posix-only/dotnet_test/test.py index f69d01b2188..179b7901956 100644 --- a/csharp/ql/integration-tests/posix-only/dotnet_test/test.py +++ b/csharp/ql/integration-tests/posix-only/dotnet_test/test.py @@ -8,3 +8,8 @@ check_diagnostics() # Explicitly build and then run tests. run_codeql_database_create(['dotnet clean', 'rm -rf test-db', 'dotnet build -o myout', 'dotnet test myout/dotnet_test.dll'], test_db="test2-db", lang="csharp") check_diagnostics(test_db="test2-db") + +thisDir = os.path.abspath(os.getcwd()) +# Explicit build and then run tests using the absolute path. +run_codeql_database_create(['dotnet clean', 'rm -rf test2-db', 'dotnet build -o myout', f'dotnet test {thisDir}/myout/dotnet_test.dll'], test_db="test3-db", lang="csharp") +check_diagnostics(test_db="test3-db") \ No newline at end of file From 91b29eee53f421f6c944bebb9596a8c87d6a95e4 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 7 Nov 2023 13:33:46 +0000 Subject: [PATCH 106/122] C++: Don't use GVN as an SSAVariable in range analysis. --- .../semantic/SemanticExprSpecific.qll | 42 ++----------------- 1 file changed, 4 insertions(+), 38 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExprSpecific.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExprSpecific.qll index 65e3955ca16..723d6047202 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExprSpecific.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExprSpecific.qll @@ -132,17 +132,7 @@ module SemanticExprConfig { newtype TSsaVariable = TSsaInstruction(IR::Instruction instr) { instr.hasMemoryResult() } or - TSsaOperand(IR::Operand op) { op.isDefinitionInexact() } or - TSsaPointerArithmeticGuard(ValueNumber instr) { - exists(Guard g, IR::Operand use | - use = instr.getAUse() and use.getIRType() instanceof IR::IRAddressType - | - g.comparesLt(use, _, _, _, _) or - g.comparesLt(_, use, _, _, _) or - g.comparesEq(use, _, _, _, _) or - g.comparesEq(_, use, _, _, _) - ) - } + TSsaOperand(IR::Operand op) { op.isDefinitionInexact() } class SsaVariable extends TSsaVariable { string toString() { none() } @@ -151,8 +141,6 @@ module SemanticExprConfig { IR::Instruction asInstruction() { none() } - ValueNumber asPointerArithGuard() { none() } - IR::Operand asOperand() { none() } } @@ -168,18 +156,6 @@ module SemanticExprConfig { final override IR::Instruction asInstruction() { result = instr } } - class SsaPointerArithmeticGuard extends SsaVariable, TSsaPointerArithmeticGuard { - ValueNumber vn; - - SsaPointerArithmeticGuard() { this = TSsaPointerArithmeticGuard(vn) } - - final override string toString() { result = vn.toString() } - - final override Location getLocation() { result = vn.getLocation() } - - final override ValueNumber asPointerArithGuard() { result = vn } - } - class SsaOperand extends SsaVariable, TSsaOperand { IR::Operand op; @@ -212,11 +188,7 @@ module SemanticExprConfig { ) } - Expr getAUse(SsaVariable v) { - result.(IR::LoadInstruction).getSourceValue() = v.asInstruction() - or - result = v.asPointerArithGuard().getAnInstruction() - } + Expr getAUse(SsaVariable v) { result.(IR::LoadInstruction).getSourceValue() = v.asInstruction() } SemType getSsaVariableType(SsaVariable v) { result = getSemanticType(v.asInstruction().getResultIRType()) @@ -255,10 +227,7 @@ module SemanticExprConfig { final override Location getLocation() { result = block.getLocation() } final override predicate hasRead(SsaVariable v) { - exists(IR::Operand operand | - operand.getDef() = v.asInstruction() or - operand.getDef() = v.asPointerArithGuard().getAnInstruction() - | + exists(IR::Operand operand | operand.getDef() = v.asInstruction() | not operand instanceof IR::PhiInputOperand and operand.getUse().getBlock() = block ) @@ -276,10 +245,7 @@ module SemanticExprConfig { final override Location getLocation() { result = succ.getLocation() } final override predicate hasRead(SsaVariable v) { - exists(IR::PhiInputOperand operand | - operand.getDef() = v.asInstruction() or - operand.getDef() = v.asPointerArithGuard().getAnInstruction() - | + exists(IR::PhiInputOperand operand | operand.getDef() = v.asInstruction() | operand.getPredecessorBlock() = pred and operand.getUse().getBlock() = succ ) From 2d43eec3c341a86a8020c1b06f20c4a03a23e4a2 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 7 Nov 2023 14:57:30 +0000 Subject: [PATCH 107/122] C++: Accept test changes. --- .../Security/CWE/CWE-193/InvalidPointerDeref.expected | 9 --------- cpp/ql/test/query-tests/Security/CWE/CWE-193/test.cpp | 2 +- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected index c530e4717db..7d5b5d87784 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected @@ -22,10 +22,6 @@ edges | test.cpp:52:19:52:37 | call to malloc | test.cpp:53:12:53:23 | ... + ... | | test.cpp:53:12:53:23 | ... + ... | test.cpp:51:33:51:35 | end | | test.cpp:60:34:60:37 | mk_array output argument | test.cpp:67:9:67:14 | ... = ... | -| test.cpp:194:15:194:33 | call to malloc | test.cpp:195:17:195:23 | ... + ... | -| test.cpp:195:17:195:23 | ... + ... | test.cpp:195:17:195:23 | ... + ... | -| test.cpp:195:17:195:23 | ... + ... | test.cpp:201:5:201:19 | ... = ... | -| test.cpp:195:17:195:23 | ... + ... | test.cpp:201:5:201:19 | ... = ... | | test.cpp:205:15:205:33 | call to malloc | test.cpp:206:17:206:23 | ... + ... | | test.cpp:206:17:206:23 | ... + ... | test.cpp:206:17:206:23 | ... + ... | | test.cpp:206:17:206:23 | ... + ... | test.cpp:213:5:213:13 | ... = ... | @@ -125,10 +121,6 @@ nodes | test.cpp:53:12:53:23 | ... + ... | semmle.label | ... + ... | | test.cpp:60:34:60:37 | mk_array output argument | semmle.label | mk_array output argument | | test.cpp:67:9:67:14 | ... = ... | semmle.label | ... = ... | -| test.cpp:194:15:194:33 | call to malloc | semmle.label | call to malloc | -| test.cpp:195:17:195:23 | ... + ... | semmle.label | ... + ... | -| test.cpp:195:17:195:23 | ... + ... | semmle.label | ... + ... | -| test.cpp:201:5:201:19 | ... = ... | semmle.label | ... = ... | | test.cpp:205:15:205:33 | call to malloc | semmle.label | call to malloc | | test.cpp:206:17:206:23 | ... + ... | semmle.label | ... + ... | | test.cpp:206:17:206:23 | ... + ... | semmle.label | ... + ... | @@ -214,7 +206,6 @@ subpaths | test.cpp:30:14:30:15 | * ... | test.cpp:28:15:28:37 | call to malloc | test.cpp:30:14:30:15 | * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:28:15:28:37 | call to malloc | call to malloc | test.cpp:29:20:29:27 | ... + ... | ... + ... | | test.cpp:32:14:32:21 | * ... | test.cpp:28:15:28:37 | call to malloc | test.cpp:32:14:32:21 | * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@ + 1. | test.cpp:28:15:28:37 | call to malloc | call to malloc | test.cpp:29:20:29:27 | ... + ... | ... + ... | | test.cpp:67:9:67:14 | ... = ... | test.cpp:52:19:52:37 | call to malloc | test.cpp:67:9:67:14 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:52:19:52:37 | call to malloc | call to malloc | test.cpp:53:20:53:23 | size | size | -| test.cpp:201:5:201:19 | ... = ... | test.cpp:194:15:194:33 | call to malloc | test.cpp:201:5:201:19 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:194:15:194:33 | call to malloc | call to malloc | test.cpp:195:21:195:23 | len | len | | test.cpp:213:5:213:13 | ... = ... | test.cpp:205:15:205:33 | call to malloc | test.cpp:213:5:213:13 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:205:15:205:33 | call to malloc | call to malloc | test.cpp:206:21:206:23 | len | len | | test.cpp:264:13:264:14 | * ... | test.cpp:260:13:260:24 | new[] | test.cpp:264:13:264:14 | * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:260:13:260:24 | new[] | new[] | test.cpp:261:19:261:21 | len | len | | test.cpp:274:5:274:10 | ... = ... | test.cpp:270:13:270:24 | new[] | test.cpp:274:5:274:10 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:270:13:270:24 | new[] | new[] | test.cpp:271:19:271:21 | len | len | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-193/test.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-193/test.cpp index 214bb80026a..cb9caeaae1b 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-193/test.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-193/test.cpp @@ -198,7 +198,7 @@ void test12(unsigned len, unsigned index) { return; } - p[index] = '\0'; // $ deref=L195->L201 // BAD + p[index] = '\0'; // $ MISSING: deref=L195->L201 // BAD [NOT DETECTED] } void test13(unsigned len, unsigned index) { From 1c8f47484870cd60f2a95d34c960023af6cf7071 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 7 Nov 2023 15:16:38 +0000 Subject: [PATCH 108/122] C++: Add comment as suggested in the PR review for #14708. --- cpp/ql/test/library-tests/ir/range-analysis/test.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cpp/ql/test/library-tests/ir/range-analysis/test.cpp b/cpp/ql/test/library-tests/ir/range-analysis/test.cpp index 1753431a6df..7234449a4ed 100644 --- a/cpp/ql/test/library-tests/ir/range-analysis/test.cpp +++ b/cpp/ql/test/library-tests/ir/range-analysis/test.cpp @@ -134,6 +134,12 @@ void test_div(int x) { struct X { int n; }; void read_argument(const X *); +// This test exists purely to ensure that modulus analysis terminates in the +// presence of inexact phi operands. The LoadInstruction on `while(x->n) { ... }` +// reads from a PhiInstruction with two input operands: an exact operand defined +// by the StoreInstruction generated by `x->n--` and an inexact operand coming +// from the WriteSideEffect generated by `read_argument(x)`. If we don't consider +// the inexact operand modulus analysis fails to terminate. void nonterminating_without_operands_as_ssa(X *x) { read_argument(x); while (x->n) { From df256e601af5ddc33d01b03f5b41164968ff9fcd Mon Sep 17 00:00:00 2001 From: Alex Denisov Date: Tue, 7 Nov 2023 17:26:44 +0100 Subject: [PATCH 109/122] Swlft: add explicit SingleValueStmtExpr test --- swift/ql/.generated.list | 3 ++- swift/ql/.gitattributes | 3 ++- .../CONSISTENCY/CfgConsistency.expected | 2 ++ .../expr/SingleValueStmtExpr/MISSING_SOURCE.txt | 4 ---- .../SingleValueStmtExpr/SingleValueStmtExpr.expected | 1 + .../expr/SingleValueStmtExpr/SingleValueStmtExpr.ql | 11 +++++++++++ .../SingleValueStmtExpr_getType.expected | 1 + .../SingleValueStmtExpr_getType.ql | 7 +++++++ .../generated/expr/SingleValueStmtExpr/test.swift | 6 ++++++ 9 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/CONSISTENCY/CfgConsistency.expected delete mode 100644 swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.expected create mode 100644 swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.ql create mode 100644 swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.expected create mode 100644 swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.ql create mode 100644 swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/test.swift diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index 62d3bbd358f..d08048e6d5f 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -835,7 +835,8 @@ test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/Property test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getWrappedValue.ql 208153f062b04bec13a860b64ea51c1d531597140d81a6d4598294dc9f8649a2 dfaea19e1075c02dfc0366fac8fd2edfae8dde06308730eb462c54be5b571129 test/extractor-tests/generated/expr/RebindSelfInInitializerExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 test/extractor-tests/generated/expr/RegexLiteralExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 -test/extractor-tests/generated/expr/SingleValueStmtExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 +test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.ql efbfaf798a86c5a7d8053a22f61249208db31edcdaf750f2671057ad2f376806 d3256d2315d5bd5420b40a4be9522752bb57897807ea3853a7a4c61e9a05e478 +test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.ql bfbeb24e57078b1bbaae331a6f3e8d13d0efbdca2228dbbca53b86d5e287efd8 864351b87f7981825e148a479e997936c653a4581e8a893eaed96ddeed891eab test/extractor-tests/generated/expr/StringLiteralExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 test/extractor-tests/generated/expr/SubscriptExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 test/extractor-tests/generated/expr/SuperRefExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 diff --git a/swift/ql/.gitattributes b/swift/ql/.gitattributes index 9539c4d8b2d..2ea093c5634 100644 --- a/swift/ql/.gitattributes +++ b/swift/ql/.gitattributes @@ -837,7 +837,8 @@ /test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getWrappedValue.ql linguist-generated /test/extractor-tests/generated/expr/RebindSelfInInitializerExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/RegexLiteralExpr/MISSING_SOURCE.txt linguist-generated -/test/extractor-tests/generated/expr/SingleValueStmtExpr/MISSING_SOURCE.txt linguist-generated +/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.ql linguist-generated +/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/StringLiteralExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/SubscriptExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/SuperRefExpr/MISSING_SOURCE.txt linguist-generated diff --git a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/CONSISTENCY/CfgConsistency.expected b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 00000000000..01748aa8e03 --- /dev/null +++ b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/CONSISTENCY/CfgConsistency.expected @@ -0,0 +1,2 @@ +deadEnd +| test.swift:1:8:1:13 | x | diff --git a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/MISSING_SOURCE.txt b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/MISSING_SOURCE.txt deleted file mode 100644 index 25daf3d23a2..00000000000 --- a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/MISSING_SOURCE.txt +++ /dev/null @@ -1,4 +0,0 @@ -// generated by codegen/codegen.py - -After a source file is added in this directory and codegen/codegen.py is run again, test queries -will appear and this file will be deleted diff --git a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.expected b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.expected new file mode 100644 index 00000000000..8ddce624fb2 --- /dev/null +++ b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.expected @@ -0,0 +1 @@ +| test.swift:2:3:5:3 | SingleValueStmtExpr | hasType: | yes | getStmt: | test.swift:2:3:5:3 | switch x { ... } | diff --git a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.ql b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.ql new file mode 100644 index 00000000000..e2da5833ed8 --- /dev/null +++ b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.ql @@ -0,0 +1,11 @@ +// generated by codegen/codegen.py +import codeql.swift.elements +import TestUtils + +from SingleValueStmtExpr x, string hasType, Stmt getStmt +where + toBeTested(x) and + not x.isUnknown() and + (if x.hasType() then hasType = "yes" else hasType = "no") and + getStmt = x.getStmt() +select x, "hasType:", hasType, "getStmt:", getStmt diff --git a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.expected new file mode 100644 index 00000000000..2bf6c0cd5da --- /dev/null +++ b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.expected @@ -0,0 +1 @@ +| test.swift:2:3:5:3 | SingleValueStmtExpr | Int | diff --git a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.ql new file mode 100644 index 00000000000..290f4c70684 --- /dev/null +++ b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.ql @@ -0,0 +1,7 @@ +// generated by codegen/codegen.py +import codeql.swift.elements +import TestUtils + +from SingleValueStmtExpr x +where toBeTested(x) and not x.isUnknown() +select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/test.swift b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/test.swift new file mode 100644 index 00000000000..b7f7077d5e8 --- /dev/null +++ b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/test.swift @@ -0,0 +1,6 @@ +func a(_ x: Int) -> Int { + switch x { + default: + 0 + } +} From dd20a9b009e1761c08def455d3194ef8a4953fab Mon Sep 17 00:00:00 2001 From: Alex Denisov Date: Tue, 7 Nov 2023 17:28:37 +0100 Subject: [PATCH 110/122] Swlft: fix wording in the comment --- swift/ql/.generated.list | 4 ++-- swift/ql/lib/codeql/swift/generated/Raw.qll | 2 +- .../lib/codeql/swift/generated/expr/SingleValueStmtExpr.qll | 2 +- swift/schema.py | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index d08048e6d5f..1a57140d4b9 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -381,7 +381,7 @@ lib/codeql/swift/generated/OtherAvailabilitySpec.qll 0e26a203b26ff0581b7396b0c6d lib/codeql/swift/generated/ParentChild.qll 235b7536d6c6b027871a1308463352e4486e2e66ed179e737bf1ac35944c2aa9 9e0d24028afd81836e8fee80cf679f39b18526c95a375b4acb2f1db0508200bf lib/codeql/swift/generated/PlatformVersionAvailabilitySpec.qll f82d9ca416fe8bd59b5531b65b1c74c9f317b3297a6101544a11339a1cffce38 7f5c6d3309e66c134107afe55bae76dfc9a72cb7cdd6d4c3706b6b34cee09fa0 lib/codeql/swift/generated/PureSynthConstructors.qll 173c0dd59396a1de26fe870e3bc2766c46de689da2a4d8807cb62023bbce1a98 173c0dd59396a1de26fe870e3bc2766c46de689da2a4d8807cb62023bbce1a98 -lib/codeql/swift/generated/Raw.qll 4ca40f7a46d77fcc9c435f4d2a18209eb4e67518850f7de1be1646833a5512eb 7245ef236d9adfe4e87a2a5124b3295a57baa03bf51a283678f508a398a41eae +lib/codeql/swift/generated/Raw.qll 00582f74242803b3aac75448945443ed0578954c5620fb143cc6074b48616e6d b25e950dbc171c6a0cf086593e89daf177dcf24a314a4280b2cb63d24b5526ee lib/codeql/swift/generated/Synth.qll 0e299d5d910589d82be11fc503640d425ea20478b8a5802347fbc575075dd53c dc87a4f03bb1ead4ef6676e6fd1b53b38b9ec6904b5113f24eb7a778f089490a lib/codeql/swift/generated/SynthConstructors.qll e6533af43a95a90e6e07add5720c83f436aa2a24c445080ba5e8cbc6417b973f e6533af43a95a90e6e07add5720c83f436aa2a24c445080ba5e8cbc6417b973f lib/codeql/swift/generated/UnknownFile.qll 0fcf9beb8de79440bcdfff4bb6ab3dd139bd273e6c32754e05e6a632651e85f6 0fcf9beb8de79440bcdfff4bb6ab3dd139bd273e6c32754e05e6a632651e85f6 @@ -533,7 +533,7 @@ lib/codeql/swift/generated/expr/RebindSelfInInitializerExpr.qll 66d4cbf211cae63a lib/codeql/swift/generated/expr/RegexLiteralExpr.qll a11eb6f6ce7cebb35ab9ff51eae85f272980140814d7e6bded454069457a1312 bdb4bb65c9f4e187cf743ed13c0213bb7e55db9cc3adeae2169df5e32b003940 lib/codeql/swift/generated/expr/SelfApplyExpr.qll c0815a4d6d4f08bd0c7bc170fa817ebcb2328c937c8ef16391fb0da71aff17ae 0979f035e8d4b54e93f17163a4df3c2aa65f23d56c491fa72376887e3e5c10ac lib/codeql/swift/generated/expr/SequenceExpr.qll 62301b2e4c76de4820c6deef0ee95c8b328ed14ba8eac70aa10cc8fb0f3c5ace feb960c796ea517abc9587bd76f7ae9aabfd9a6b0984fe2d8380e803b002eede -lib/codeql/swift/generated/expr/SingleValueStmtExpr.qll 0284863f7b5a41281e2b2395ee5a6f6f5fccc684c3f6951a652a46f096a251ec f0efdc5ab9f939ce6e8152aeae2327bf6868e0f29ba5541eb42f7d2e1085b30c +lib/codeql/swift/generated/expr/SingleValueStmtExpr.qll 4c802cdd67b05e6ce6f59a71a2d8f727fb59a01acba1017b025e0979e32bb5c3 d220e60089a4ca1e464e933bd0d2b06d815fa796e5b9f5a970d4fbf3a4fde565 lib/codeql/swift/generated/expr/StringLiteralExpr.qll f420c5cd51a223b6f98177147967266e0094a5718ba2d57ae2d3acbb64bbb4b6 30d6dab2a93fd95e652a700902c4d106fecfce13880c2ece565de29f2504bedf lib/codeql/swift/generated/expr/StringToPointerExpr.qll ef69b570aa90697d438f5787a86797955b4b2f985960b5859a7bd13b9ecb9cd3 ef69b570aa90697d438f5787a86797955b4b2f985960b5859a7bd13b9ecb9cd3 lib/codeql/swift/generated/expr/SubscriptExpr.qll 8a2bf1f0ded1888546791e0e59b969267f0352223e2abeb38e91dfa2144a38ae 009566ef61689d14844730235b0e0c31ee01e95e2002cf7272cbabc97539dce9 diff --git a/swift/ql/lib/codeql/swift/generated/Raw.qll b/swift/ql/lib/codeql/swift/generated/Raw.qll index d5b087cf574..64b1313c5b6 100644 --- a/swift/ql/lib/codeql/swift/generated/Raw.qll +++ b/swift/ql/lib/codeql/swift/generated/Raw.qll @@ -1573,7 +1573,7 @@ module Raw { /** * INTERNAL: Do not use. - * An expression that may wrap a statement which produces a single value. + * An expression that wraps a statement which produces a single value. */ class SingleValueStmtExpr extends @single_value_stmt_expr, Expr { override string toString() { result = "SingleValueStmtExpr" } diff --git a/swift/ql/lib/codeql/swift/generated/expr/SingleValueStmtExpr.qll b/swift/ql/lib/codeql/swift/generated/expr/SingleValueStmtExpr.qll index 6e5814cc917..65285f446bf 100644 --- a/swift/ql/lib/codeql/swift/generated/expr/SingleValueStmtExpr.qll +++ b/swift/ql/lib/codeql/swift/generated/expr/SingleValueStmtExpr.qll @@ -6,7 +6,7 @@ import codeql.swift.elements.stmt.Stmt module Generated { /** - * An expression that may wrap a statement which produces a single value. + * An expression that wraps a statement which produces a single value. */ class SingleValueStmtExpr extends Synth::TSingleValueStmtExpr, Expr { override string getAPrimaryQlClass() { result = "SingleValueStmtExpr" } diff --git a/swift/schema.py b/swift/schema.py index 36d12f88898..7092cc381e1 100644 --- a/swift/schema.py +++ b/swift/schema.py @@ -1243,6 +1243,6 @@ class AbiSafeConversionExpr(ImplicitConversionExpr): class SingleValueStmtExpr(Expr): """ - An expression that may wrap a statement which produces a single value. + An expression that wraps a statement which produces a single value. """ stmt: Stmt | child From ae577d1e4499d4db0e5b3429f97f84122e11084f Mon Sep 17 00:00:00 2001 From: erik-krogh Date: Tue, 7 Nov 2023 17:42:21 +0100 Subject: [PATCH 111/122] catch when the main: path is invalid on Windows --- .../src/com/semmle/js/extractor/AutoBuild.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java index 398f7e6de68..df2838a427f 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java +++ b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java @@ -892,10 +892,15 @@ protected DependencyInstallationResult preparePackagesAndDependencies(Set // For named packages, find the main file. String name = packageJson.getName(); if (name != null) { - Path entryPoint = guessPackageMainFile(path, packageJson, FileType.TYPESCRIPT.getExtensions()); - if (entryPoint == null) { - // Try a TypeScript-recognized JS extension instead - entryPoint = guessPackageMainFile(path, packageJson, Arrays.asList(".js", ".jsx")); + Path entryPoint = null; + try { + entryPoint = guessPackageMainFile(path, packageJson, FileType.TYPESCRIPT.getExtensions()); + if (entryPoint == null) { + // Try a TypeScript-recognized JS extension instead + entryPoint = guessPackageMainFile(path, packageJson, Arrays.asList(".js", ".jsx")); + } + } catch (InvalidPathException ignore) { + // can happen if the `main:` field is invalid. E.g. on Windows a path like `dist/*.js` will crash. } if (entryPoint != null) { System.out.println(relativePath + ": Main file set to " + sourceRoot.relativize(entryPoint)); From 12f9e3a1ddd1011aed3039d93bbe0b2cce059218 Mon Sep 17 00:00:00 2001 From: Alex Denisov Date: Tue, 7 Nov 2023 18:04:20 +0100 Subject: [PATCH 112/122] Swlft: fix CFG for SingleValueStmtExpr --- .../swift/controlflow/internal/ControlFlowGraphImpl.qll | 9 +++++++++ .../CONSISTENCY/CfgConsistency.expected | 2 -- .../flowsources/CONSISTENCY/CfgConsistency.expected | 5 ----- 3 files changed, 9 insertions(+), 7 deletions(-) delete mode 100644 swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/CONSISTENCY/CfgConsistency.expected delete mode 100644 swift/ql/test/library-tests/dataflow/flowsources/CONSISTENCY/CfgConsistency.expected diff --git a/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImpl.qll b/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImpl.qll index 5a18c1db76f..eef4b32f2d9 100644 --- a/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImpl.qll +++ b/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImpl.qll @@ -1417,6 +1417,15 @@ module Exprs { } } + /** Control-flow for a `SingleValueStmtExpr`. See the QLDoc for `SingleValueStmtExpr` for the semantics of a `SingleValueStmtExpr`. */ + private class SingleValueStmtExprTree extends AstStandardPostOrderTree { + override SingleValueStmtExpr ast; + + final override ControlFlowElement getChildElement(int i) { + i = 0 and result.asAstNode() = ast.getStmt() + } + } + private class OpaqueValueExprTree extends AstLeafTree { override OpaqueValueExpr ast; } diff --git a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/CONSISTENCY/CfgConsistency.expected b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/CONSISTENCY/CfgConsistency.expected deleted file mode 100644 index 01748aa8e03..00000000000 --- a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/CONSISTENCY/CfgConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -deadEnd -| test.swift:1:8:1:13 | x | diff --git a/swift/ql/test/library-tests/dataflow/flowsources/CONSISTENCY/CfgConsistency.expected b/swift/ql/test/library-tests/dataflow/flowsources/CONSISTENCY/CfgConsistency.expected deleted file mode 100644 index eca8be91c8b..00000000000 --- a/swift/ql/test/library-tests/dataflow/flowsources/CONSISTENCY/CfgConsistency.expected +++ /dev/null @@ -1,5 +0,0 @@ -deadEnd -| alamofire.swift:469:9:469:9 | stream | -| alamofire.swift:484:9:484:9 | stream | -| alamofire.swift:499:9:499:9 | stream | -| alamofire.swift:514:9:514:9 | stream | From 69502d0c319db458ae39bcbb002e5896eb47e5d5 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 7 Nov 2023 17:31:01 +0000 Subject: [PATCH 113/122] C++: Add some more tests. --- .../CWE/CWE-457/semmle/tests/test.cpp | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/test.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/test.cpp index 69b7f4295e2..dc1ad9a0376 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/test.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/test.cpp @@ -472,4 +472,64 @@ void test44() { int y = 1; void(x + y); // BAD +} + +enum class State { StateA, StateB, StateC }; + +int exhaustive_switch(State s) { + int y; + switch(s) { + case State::StateA: + y = 1; + break; + case State::StateB: + y = 2; + break; + case State::StateC: + y = 3; + break; + } + return y; // GOOD (y is always initialized) +} + +int exhaustive_switch_2(State s) { + int y; + switch(s) { + case State::StateA: + y = 1; + break; + default: + y = 2; + break; + } + return y; // GOOD (y is always initialized) +} + +int non_exhaustive_switch(State s) { + int y; + switch(s) { + case State::StateA: + y = 1; + break; + case State::StateB: + y = 2; + break; + } + return y; // BAD [NOT DETECTED] (y is not initialized when s = StateC) +} + +int non_exhaustive_switch_2(State s) { + int y; + switch(s) { + case State::StateA: + y = 1; + break; + case State::StateB: + y = 2; + break; + } + if(s != State::StateC) { + return y; // GOOD (y is not initialized when s = StateC, but if s = StateC we won't reach this point) + } + return 0; } \ No newline at end of file From 3f95dd6916c079f0434d086be267a94a9111a303 Mon Sep 17 00:00:00 2001 From: Cornelius Riemenschneider Date: Tue, 7 Nov 2023 20:21:10 +0100 Subject: [PATCH 114/122] Restructure go Makefile: Build the per-platform target. This changes the default build target we use to build the go extractor to use th per-platform targets (requires internal change to follow up). This also builds the macos target as universal binary. --- go/Makefile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/go/Makefile b/go/Makefile index 24688cce942..d0289a093a5 100644 --- a/go/Makefile +++ b/go/Makefile @@ -47,7 +47,7 @@ endif qhelp-to-markdown: scripts/qhelp-to-markdown.sh ql/src "$(QHELP_OUT_DIR)" -tools: $(addsuffix $(EXE),$(addprefix tools/bin/,$(BINARIES))) tools/tokenizer.jar +tools: tools-codeql tools/tokenizer.jar .PHONY: $(addsuffix $(EXE),$(addprefix tools/bin/,$(BINARIES))) $(addsuffix $(EXE),$(addprefix tools/bin/,$(BINARIES))): @@ -67,7 +67,10 @@ tools-osx64: $(addprefix tools/osx64/,$(BINARIES)) .PHONY: $(addprefix tools/osx64/,$(BINARIES)) $(addprefix tools/osx64/,$(BINARIES)): - GOOS=darwin GOARCH=amd64 go build -C extractor -mod=vendor -o ../$@ ./cli/$(@F) + GOOS=darwin GOARCH=amd64 go build -C extractor -mod=vendor -o ../$@.amd64 ./cli/$(@F) + GOOS=darwin GOARCH=arm64 go build -C extractor -mod=vendor -o ../$@.arm64 ./cli/$(@F) + lipo -create $@.amd64 $@.arm64 -output $@ + rm $@.amd64 $@.arm64 tools-win64: $(addsuffix .exe,$(addprefix tools/win64/,$(BINARIES))) From 69e862106264e862701a27602d3523c14334a705 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 6 Nov 2023 15:07:25 +0100 Subject: [PATCH 115/122] C#: Fix compiler warning of possible null de-reference. --- .../extractor/Semmle.Extraction.CSharp/Entities/Attribute.cs | 2 +- .../Entities/NonGeneratedSourceLocation.cs | 2 +- .../Semmle.Extraction/Entities/Base/CachedEntity`1.cs | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Attribute.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Attribute.cs index 08e8f391a34..a70b84dde1d 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Attribute.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Attribute.cs @@ -91,7 +91,7 @@ namespace Semmle.Extraction.CSharp.Entities // The current argument is not named // so the previous ones were also not named // so the child index matches the parameter index. - isParamsParameter = Symbol?.AttributeConstructor?.Parameters[childIndex].IsParams == true; + isParamsParameter = Symbol.AttributeConstructor?.Parameters[childIndex].IsParams == true; argSyntax = ctorArguments[childIndex]; } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/NonGeneratedSourceLocation.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/NonGeneratedSourceLocation.cs index f479f607e9c..e3e3c0c6ae4 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/NonGeneratedSourceLocation.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/NonGeneratedSourceLocation.cs @@ -22,7 +22,7 @@ namespace Semmle.Extraction.CSharp.Entities Position.Span.Start.Line + 1, Position.Span.Start.Character + 1, Position.Span.End.Line + 1, Position.Span.End.Character); - var mapped = Symbol!.GetMappedLineSpan(); + var mapped = Symbol.GetMappedLineSpan(); if (mapped.HasMappedPath && mapped.IsValid) { var mappedLoc = Create(Context, Location.Create(mapped.Path, default, mapped.Span)); diff --git a/csharp/extractor/Semmle.Extraction/Entities/Base/CachedEntity`1.cs b/csharp/extractor/Semmle.Extraction/Entities/Base/CachedEntity`1.cs index 4ef36362733..4b82d4cb81c 100644 --- a/csharp/extractor/Semmle.Extraction/Entities/Base/CachedEntity`1.cs +++ b/csharp/extractor/Semmle.Extraction/Entities/Base/CachedEntity`1.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using System.IO; using Microsoft.CodeAnalysis; @@ -30,6 +31,7 @@ namespace Semmle.Extraction /// The type of the symbol. public abstract class CachedEntity : CachedEntity where TSymbol : notnull { + [NotNull] public TSymbol Symbol { get; } protected CachedEntity(Context context, TSymbol symbol) : base(context) @@ -52,7 +54,7 @@ namespace Semmle.Extraction public override bool NeedsPopulation { get; } - public override int GetHashCode() => Symbol is null ? 0 : Symbol.GetHashCode(); + public override int GetHashCode() => Symbol.GetHashCode(); public override bool Equals(object? obj) { From 0cf00ebb5d3be250b842e9233064ff243455cb13 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 8 Nov 2023 10:59:06 +0100 Subject: [PATCH 116/122] C#: Re-introduce null check in cached entity hash code calculation. --- .../extractor/Semmle.Extraction/Entities/Base/CachedEntity`1.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/extractor/Semmle.Extraction/Entities/Base/CachedEntity`1.cs b/csharp/extractor/Semmle.Extraction/Entities/Base/CachedEntity`1.cs index 4b82d4cb81c..82ded71a9cd 100644 --- a/csharp/extractor/Semmle.Extraction/Entities/Base/CachedEntity`1.cs +++ b/csharp/extractor/Semmle.Extraction/Entities/Base/CachedEntity`1.cs @@ -54,7 +54,7 @@ namespace Semmle.Extraction public override bool NeedsPopulation { get; } - public override int GetHashCode() => Symbol.GetHashCode(); + public override int GetHashCode() => Symbol is null ? 0 : Symbol.GetHashCode(); public override bool Equals(object? obj) { From d78a7b9d940a8cbfb514d933b83806cd5d2333e2 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 8 Nov 2023 10:46:57 +0000 Subject: [PATCH 117/122] Swift: Add credit to change note. --- swift/ql/src/change-notes/2023-11-06-command-injection.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swift/ql/src/change-notes/2023-11-06-command-injection.md b/swift/ql/src/change-notes/2023-11-06-command-injection.md index c04e596dab2..0ad3340c7cf 100644 --- a/swift/ql/src/change-notes/2023-11-06-command-injection.md +++ b/swift/ql/src/change-notes/2023-11-06-command-injection.md @@ -2,4 +2,4 @@ category: newQuery --- -* Added new query "System command built from user-controlled sources" (`swift/command-line-injection`) for Swift. This query detects system commands built from user-controlled sources without sufficient validation. The query was previously contributed to the 'experimental' directory but will now run by default for all code scanning users. +* Added new query "System command built from user-controlled sources" (`swift/command-line-injection`) for Swift. This query detects system commands built from user-controlled sources without sufficient validation. The query was previously [contributed to the 'experimental' directory by @maikypedia](https://github.com/github/codeql/pull/13726) but will now run by default for all code scanning users. From 1f4cd74a1c0d68259ac96849c3674391c3a6f31e Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 3 Nov 2023 15:43:44 +0100 Subject: [PATCH 118/122] Java/C++: Move SsaReadPosition to shared qlpack. --- .../semantic/SemanticExprSpecific.qll | 70 +--------- .../new/internal/semantic/SemanticSSA.qll | 35 +---- .../semantic/analysis/RangeAnalysisImpl.qll | 8 +- .../internal/semantic/analysis/RangeUtils.qll | 29 ---- .../semantic/analysis/SignAnalysisCommon.qll | 34 ++--- .../code/java/dataflow/RangeAnalysis.qll | 40 ++---- .../semmle/code/java/dataflow/RangeUtils.qll | 1 - .../rangeanalysis/SignAnalysisSpecific.qll | 30 ++++- .../codeql/rangeanalysis/ModulusAnalysis.qll | 24 ++-- .../codeql/rangeanalysis/RangeAnalysis.qll | 65 ++++----- .../rangeanalysis/internal/RangeUtils.qll | 124 ++++++++++++++---- 11 files changed, 203 insertions(+), 257 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExprSpecific.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExprSpecific.qll index d929f9d447b..a51eb2678a9 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExprSpecific.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExprSpecific.qll @@ -198,75 +198,15 @@ module SemanticExprConfig { result = v.asOperand().getUse().getBlock() } - private newtype TReadPosition = - TReadPositionBlock(IR::IRBlock block) or - TReadPositionPhiInputEdge(IR::IRBlock pred, IR::IRBlock succ) { - exists(IR::PhiInputOperand input | - pred = input.getPredecessorBlock() and - succ = input.getUse().getBlock() - ) - } - - class SsaReadPosition extends TReadPosition { - string toString() { none() } - - Location getLocation() { none() } - - predicate hasRead(SsaVariable v) { none() } - } - - private class SsaReadPositionBlock extends SsaReadPosition, TReadPositionBlock { - IR::IRBlock block; - - SsaReadPositionBlock() { this = TReadPositionBlock(block) } - - final override string toString() { result = block.toString() } - - final override Location getLocation() { result = block.getLocation() } - - final override predicate hasRead(SsaVariable v) { - exists(IR::Operand operand | operand.getDef() = v.asInstruction() | - not operand instanceof IR::PhiInputOperand and - operand.getUse().getBlock() = block - ) - } - } - - private class SsaReadPositionPhiInputEdge extends SsaReadPosition, TReadPositionPhiInputEdge { - IR::IRBlock pred; - IR::IRBlock succ; - - SsaReadPositionPhiInputEdge() { this = TReadPositionPhiInputEdge(pred, succ) } - - final override string toString() { result = pred.toString() + "->" + succ.toString() } - - final override Location getLocation() { result = succ.getLocation() } - - final override predicate hasRead(SsaVariable v) { - exists(IR::PhiInputOperand operand | operand.getDef() = v.asInstruction() | - operand.getPredecessorBlock() = pred and - operand.getUse().getBlock() = succ - ) - } - } - - predicate hasReadOfSsaVariable(SsaReadPosition pos, SsaVariable v) { pos.hasRead(v) } - - predicate readBlock(SsaReadPosition pos, BasicBlock block) { pos = TReadPositionBlock(block) } - - predicate phiInputEdge(SsaReadPosition pos, BasicBlock origBlock, BasicBlock phiBlock) { - pos = TReadPositionPhiInputEdge(origBlock, phiBlock) - } - - predicate phiInput(SsaReadPosition pos, SsaVariable phi, SsaVariable input) { + /** Holds if `inp` is an input to the phi node along the edge originating in `bb`. */ + predicate phiInputFromBlock(SsaVariable phi, SsaVariable inp, BasicBlock bb) { exists(IR::PhiInputOperand operand | - pos = TReadPositionPhiInputEdge(operand.getPredecessorBlock(), operand.getUse().getBlock()) - | + bb = operand.getPredecessorBlock() and phi.asInstruction() = operand.getUse() and ( - input.asInstruction() = operand.getDef() + inp.asInstruction() = operand.getDef() or - input.asOperand() = operand + inp.asOperand() = operand ) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticSSA.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticSSA.qll index 0bbfc2998af..8e7f3c7cfb3 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticSSA.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticSSA.qll @@ -31,35 +31,8 @@ class SemSsaPhiNode extends SemSsaVariable { SemSsaPhiNode() { Specific::phi(this) } final SemSsaVariable getAPhiInput() { result = Specific::getAPhiInput(this) } -} - -class SemSsaReadPosition instanceof Specific::SsaReadPosition { - final string toString() { result = super.toString() } - - final Specific::Location getLocation() { result = super.getLocation() } - - final predicate hasReadOfVar(SemSsaVariable var) { Specific::hasReadOfSsaVariable(this, var) } -} - -class SemSsaReadPositionPhiInputEdge extends SemSsaReadPosition { - SemBasicBlock origBlock; - SemBasicBlock phiBlock; - - SemSsaReadPositionPhiInputEdge() { Specific::phiInputEdge(this, origBlock, phiBlock) } - - predicate phiInput(SemSsaPhiNode phi, SemSsaVariable inp) { Specific::phiInput(this, phi, inp) } - - SemBasicBlock getOrigBlock() { result = origBlock } - - SemBasicBlock getPhiBlock() { result = phiBlock } -} - -class SemSsaReadPositionBlock extends SemSsaReadPosition { - SemBasicBlock block; - - SemSsaReadPositionBlock() { Specific::readBlock(this, block) } - - SemBasicBlock getBlock() { result = block } - - SemExpr getAnExpr() { result = this.getBlock().getAnExpr() } + + final predicate hasInputFromBlock(SemSsaVariable inp, SemBasicBlock bb) { + Specific::phiInputFromBlock(this, inp, bb) + } } diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/RangeAnalysisImpl.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/RangeAnalysisImpl.qll index e8b8bde758a..4957f700ac6 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/RangeAnalysisImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/RangeAnalysisImpl.qll @@ -74,6 +74,8 @@ module Sem implements Semantic { BasicBlock getABasicBlockSuccessor(BasicBlock bb) { result = bb.getASuccessor() } + int getBlockId1(BasicBlock bb) { result = bb.getUniqueId() } + class Guard = SemGuard; predicate implies_v2 = semImplies_v2/4; @@ -92,12 +94,6 @@ module Sem implements Semantic { class SsaExplicitUpdate = SemSsaExplicitUpdate; - class SsaReadPosition = SemSsaReadPosition; - - class SsaReadPositionPhiInputEdge = SemSsaReadPositionPhiInputEdge; - - class SsaReadPositionBlock = SemSsaReadPositionBlock; - predicate conversionCannotOverflow(Type fromType, Type toType) { SemanticType::conversionCannotOverflow(fromType, toType) } diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/RangeUtils.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/RangeUtils.qll index c61bf4817c2..7276f066220 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/RangeUtils.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/RangeUtils.qll @@ -133,33 +133,4 @@ module RangeUtil Lang> implements UtilSig { or not exists(Lang::getAlternateTypeForSsaVariable(var)) and result = var.getType() } - - import Ranking -} - -import Ranking - -module Ranking { - /** - * Holds if `rix` is the number of input edges to `phi`. - */ - predicate maxPhiInputRank(SemSsaPhiNode phi, int rix) { - rix = max(int r | rankedPhiInput(phi, _, _, r)) - } - - /** - * Holds if `inp` is an input to `phi` along `edge` and this input has index `r` - * in an arbitrary 1-based numbering of the input edges to `phi`. - */ - predicate rankedPhiInput( - SemSsaPhiNode phi, SemSsaVariable inp, SemSsaReadPositionPhiInputEdge edge, int r - ) { - edge.phiInput(phi, inp) and - edge = - rank[r](SemSsaReadPositionPhiInputEdge e | - e.phiInput(phi, _) - | - e order by e.getOrigBlock().getUniqueId() - ) - } } diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/SignAnalysisCommon.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/SignAnalysisCommon.qll index c79172d74d0..f6f0d6302b7 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/SignAnalysisCommon.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/SignAnalysisCommon.qll @@ -45,7 +45,7 @@ module SignAnalysis Utils> { /** An SSA Phi definition, whose sign is the union of the signs of its inputs. */ private class PhiSignDef extends FlowSignDef instanceof SemSsaPhiNode { final override Sign getSign() { - exists(SemSsaVariable inp, SemSsaReadPositionPhiInputEdge edge | + exists(SemSsaVariable inp, SsaReadPositionPhiInputEdge edge | edge.phiInput(this, inp) and result = semSsaSign(inp, edge) ) @@ -170,11 +170,11 @@ module SignAnalysis Utils> { override Sign getSignRestriction() { // Propagate via SSA // Propagate the sign from the def of `v`, incorporating any inference from guards. - result = semSsaSign(v, any(SemSsaReadPositionBlock bb | bb.getAnExpr() = this)) + result = semSsaSign(v, any(SsaReadPositionBlock bb | bb.getBlock().getAnExpr() = this)) or // No block for this read. Just use the sign of the def. // REVIEW: How can this happen? - not exists(SemSsaReadPositionBlock bb | bb.getAnExpr() = this) and + not exists(SsaReadPositionBlock bb | bb.getBlock().getAnExpr() = this) and result = semSsaDefSign(v) } } @@ -290,7 +290,7 @@ module SignAnalysis Utils> { * to only include bounds for which we might determine a sign. */ private predicate lowerBound( - SemExpr lowerbound, SemSsaVariable v, SemSsaReadPosition pos, boolean isStrict + SemExpr lowerbound, SemSsaVariable v, SsaReadPosition pos, boolean isStrict ) { exists(boolean testIsTrue, SemRelationalExpr comp | pos.hasReadOfVar(v) and @@ -314,7 +314,7 @@ module SignAnalysis Utils> { * to only include bounds for which we might determine a sign. */ private predicate upperBound( - SemExpr upperbound, SemSsaVariable v, SemSsaReadPosition pos, boolean isStrict + SemExpr upperbound, SemSsaVariable v, SsaReadPosition pos, boolean isStrict ) { exists(boolean testIsTrue, SemRelationalExpr comp | pos.hasReadOfVar(v) and @@ -340,7 +340,7 @@ module SignAnalysis Utils> { * - `isEq = true` : `v = eqbound` * - `isEq = false` : `v != eqbound` */ - private predicate eqBound(SemExpr eqbound, SemSsaVariable v, SemSsaReadPosition pos, boolean isEq) { + private predicate eqBound(SemExpr eqbound, SemSsaVariable v, SsaReadPosition pos, boolean isEq) { exists(SemGuard guard, boolean testIsTrue, boolean polarity, SemExpr e | pos.hasReadOfVar(pragma[only_bind_into](v)) and guardControlsSsaRead(guard, pragma[only_bind_into](pos), testIsTrue) and @@ -355,7 +355,7 @@ module SignAnalysis Utils> { * Holds if `bound` is a bound for `v` at `pos` that needs to be positive in * order for `v` to be positive. */ - private predicate posBound(SemExpr bound, SemSsaVariable v, SemSsaReadPosition pos) { + private predicate posBound(SemExpr bound, SemSsaVariable v, SsaReadPosition pos) { upperBound(bound, v, pos, _) or eqBound(bound, v, pos, true) } @@ -364,7 +364,7 @@ module SignAnalysis Utils> { * Holds if `bound` is a bound for `v` at `pos` that needs to be negative in * order for `v` to be negative. */ - private predicate negBound(SemExpr bound, SemSsaVariable v, SemSsaReadPosition pos) { + private predicate negBound(SemExpr bound, SemSsaVariable v, SsaReadPosition pos) { lowerBound(bound, v, pos, _) or eqBound(bound, v, pos, true) } @@ -373,24 +373,24 @@ module SignAnalysis Utils> { * Holds if `bound` is a bound for `v` at `pos` that can restrict whether `v` * can be zero. */ - private predicate zeroBound(SemExpr bound, SemSsaVariable v, SemSsaReadPosition pos) { + private predicate zeroBound(SemExpr bound, SemSsaVariable v, SsaReadPosition pos) { lowerBound(bound, v, pos, _) or upperBound(bound, v, pos, _) or eqBound(bound, v, pos, _) } /** Holds if `bound` allows `v` to be positive at `pos`. */ - private predicate posBoundOk(SemExpr bound, SemSsaVariable v, SemSsaReadPosition pos) { + private predicate posBoundOk(SemExpr bound, SemSsaVariable v, SsaReadPosition pos) { posBound(bound, v, pos) and TPos() = semExprSign(bound) } /** Holds if `bound` allows `v` to be negative at `pos`. */ - private predicate negBoundOk(SemExpr bound, SemSsaVariable v, SemSsaReadPosition pos) { + private predicate negBoundOk(SemExpr bound, SemSsaVariable v, SsaReadPosition pos) { negBound(bound, v, pos) and TNeg() = semExprSign(bound) } /** Holds if `bound` allows `v` to be zero at `pos`. */ - private predicate zeroBoundOk(SemExpr bound, SemSsaVariable v, SemSsaReadPosition pos) { + private predicate zeroBoundOk(SemExpr bound, SemSsaVariable v, SsaReadPosition pos) { lowerBound(bound, v, pos, _) and TNeg() = semExprSign(bound) or lowerBound(bound, v, pos, false) and TZero() = semExprSign(bound) @@ -408,7 +408,7 @@ module SignAnalysis Utils> { * Holds if there is a bound that might restrict whether `v` has the sign `s` * at `pos`. */ - private predicate hasGuard(SemSsaVariable v, SemSsaReadPosition pos, Sign s) { + private predicate hasGuard(SemSsaVariable v, SsaReadPosition pos, Sign s) { s = TPos() and posBound(_, v, pos) or s = TNeg() and negBound(_, v, pos) @@ -421,7 +421,7 @@ module SignAnalysis Utils> { * might be ruled out by a guard. */ pragma[noinline] - private Sign guardedSsaSign(SemSsaVariable v, SemSsaReadPosition pos) { + private Sign guardedSsaSign(SemSsaVariable v, SsaReadPosition pos) { result = semSsaDefSign(v) and pos.hasReadOfVar(v) and hasGuard(v, pos, result) @@ -432,7 +432,7 @@ module SignAnalysis Utils> { * can rule it out. */ pragma[noinline] - private Sign unguardedSsaSign(SemSsaVariable v, SemSsaReadPosition pos) { + private Sign unguardedSsaSign(SemSsaVariable v, SsaReadPosition pos) { result = semSsaDefSign(v) and pos.hasReadOfVar(v) and not hasGuard(v, pos, result) @@ -443,7 +443,7 @@ module SignAnalysis Utils> { * ruled out the sign but does not. * This does not check that the definition of `v` also allows the sign. */ - private Sign guardedSsaSignOk(SemSsaVariable v, SemSsaReadPosition pos) { + private Sign guardedSsaSignOk(SemSsaVariable v, SsaReadPosition pos) { result = TPos() and forex(SemExpr bound | posBound(bound, v, pos) | posBoundOk(bound, v, pos)) or @@ -455,7 +455,7 @@ module SignAnalysis Utils> { } /** Gets a possible sign for `v` at `pos`. */ - private Sign semSsaSign(SemSsaVariable v, SemSsaReadPosition pos) { + private Sign semSsaSign(SemSsaVariable v, SsaReadPosition pos) { result = unguardedSsaSign(v, pos) or result = guardedSsaSign(v, pos) and diff --git a/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll b/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll index 0fd07fe0258..64d17202d67 100644 --- a/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll +++ b/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll @@ -66,7 +66,6 @@ import java private import SSA private import RangeUtils -private import semmle.code.java.dataflow.internal.rangeanalysis.SsaReadPositionCommon private import semmle.code.java.controlflow.internal.GuardsLogic private import semmle.code.java.security.RandomDataSource private import SignAnalysis @@ -80,7 +79,6 @@ module Sem implements Semantic { private import java as J private import SSA as SSA private import RangeUtils as RU - private import semmle.code.java.dataflow.internal.rangeanalysis.SsaReadPositionCommon as SsaReadPos private import semmle.code.java.controlflow.internal.GuardsLogic as GL class Expr = J::Expr; @@ -213,6 +211,12 @@ module Sem implements Semantic { BasicBlock getABasicBlockSuccessor(BasicBlock bb) { result = bb.getABBSuccessor() } + private predicate id(BasicBlock x, BasicBlock y) { x = y } + + private predicate idOf(BasicBlock x, int y) = equivalenceRelation(id/2)(x, y) + + int getBlockId1(BasicBlock bb) { idOf(bb, result) } + final private class FinalGuard = GL::Guard; class Guard extends FinalGuard { @@ -243,31 +247,14 @@ module Sem implements Semantic { Expr getAUse() { result = super.getAUse() } } - class SsaPhiNode extends SsaVariable instanceof SSA::SsaPhiNode { } + class SsaPhiNode extends SsaVariable instanceof SSA::SsaPhiNode { + predicate hasInputFromBlock(SsaVariable inp, BasicBlock bb) { super.hasInputFromBlock(inp, bb) } + } class SsaExplicitUpdate extends SsaVariable instanceof SSA::SsaExplicitUpdate { Expr getDefiningExpr() { result = super.getDefiningExpr() } } - final private class FinalSsaReadPosition = SsaReadPos::SsaReadPosition; - - class SsaReadPosition extends FinalSsaReadPosition { - predicate hasReadOfVar(SsaVariable v) { super.hasReadOfVar(v) } - } - - class SsaReadPositionPhiInputEdge extends SsaReadPosition instanceof SsaReadPos::SsaReadPositionPhiInputEdge - { - BasicBlock getOrigBlock() { result = super.getOrigBlock() } - - BasicBlock getPhiBlock() { result = super.getPhiBlock() } - - predicate phiInput(SsaPhiNode phi, SsaVariable inp) { super.phiInput(phi, inp) } - } - - class SsaReadPositionBlock extends SsaReadPosition instanceof SsaReadPos::SsaReadPositionBlock { - BasicBlock getBlock() { result = super.getBlock() } - } - predicate conversionCannotOverflow = safeCast/2; } @@ -384,7 +371,6 @@ module JavaLangImpl implements LangSig { module Utils implements UtilSig { private import RangeUtils as RU - private import semmle.code.java.dataflow.internal.rangeanalysis.SsaReadPositionCommon as SsaReadPos Sem::Guard semEqFlowCond( Sem::SsaVariable v, Sem::Expr e, int delta, boolean isEq, boolean testIsTrue @@ -403,14 +389,6 @@ module Utils implements UtilSig { } Sem::Type getTrackedType(Sem::Expr e) { result = e.getType() } - - predicate rankedPhiInput( - Sem::SsaPhiNode phi, Sem::SsaVariable inp, Sem::SsaReadPositionPhiInputEdge edge, int r - ) { - SsaReadPos::rankedPhiInput(phi, inp, edge, r) - } - - predicate maxPhiInputRank(Sem::SsaPhiNode phi, int rix) { SsaReadPos::maxPhiInputRank(phi, rix) } } module Bounds implements BoundSig { diff --git a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll index 718c7c2175e..f01d5cc8d54 100644 --- a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll +++ b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll @@ -5,7 +5,6 @@ import java private import SSA private import semmle.code.java.controlflow.internal.GuardsLogic -private import semmle.code.java.dataflow.internal.rangeanalysis.SsaReadPositionCommon private import semmle.code.java.Constants private import semmle.code.java.dataflow.RangeAnalysis private import codeql.rangeanalysis.internal.RangeUtils diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll index 253506347f3..bcc11e26518 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll @@ -6,6 +6,8 @@ module Private { import semmle.code.java.dataflow.RangeUtils as RU private import semmle.code.java.dataflow.SSA as Ssa private import semmle.code.java.controlflow.Guards as G + private import SsaReadPositionCommon + private import semmle.code.java.controlflow.internal.GuardsLogic as GL private import Sign import Impl @@ -168,7 +170,33 @@ module Private { predicate ssaRead = RU::ssaRead/2; - predicate guardControlsSsaRead = RU::guardControlsSsaRead/3; + /** + * Holds if `guard` directly controls the position `controlled` with the + * value `testIsTrue`. + */ + pragma[nomagic] + private predicate guardDirectlyControlsSsaRead( + Guard guard, SsaReadPosition controlled, boolean testIsTrue + ) { + guard.directlyControls(controlled.(SsaReadPositionBlock).getBlock(), testIsTrue) + or + exists(SsaReadPositionPhiInputEdge controlledEdge | controlledEdge = controlled | + guard.directlyControls(controlledEdge.getOrigBlock(), testIsTrue) or + guard.hasBranchEdge(controlledEdge.getOrigBlock(), controlledEdge.getPhiBlock(), testIsTrue) + ) + } + + /** + * Holds if `guard` controls the position `controlled` with the value `testIsTrue`. + */ + predicate guardControlsSsaRead(Guard guard, SsaReadPosition controlled, boolean testIsTrue) { + guardDirectlyControlsSsaRead(guard, controlled, testIsTrue) + or + exists(Guard guard0, boolean testIsTrue0 | + GL::implies_v2(guard0, testIsTrue0, guard, testIsTrue) and + guardControlsSsaRead(guard0, controlled, testIsTrue0) + ) + } } private module Impl { diff --git a/shared/rangeanalysis/codeql/rangeanalysis/ModulusAnalysis.qll b/shared/rangeanalysis/codeql/rangeanalysis/ModulusAnalysis.qll index ea2f2fb63c7..16d63b8ca00 100644 --- a/shared/rangeanalysis/codeql/rangeanalysis/ModulusAnalysis.qll +++ b/shared/rangeanalysis/codeql/rangeanalysis/ModulusAnalysis.qll @@ -21,7 +21,7 @@ module ModulusAnalysis< bindingset[pos, v] pragma[inline_late] - private predicate hasReadOfVarInlineLate(Sem::SsaReadPosition pos, Sem::SsaVariable v) { + private predicate hasReadOfVarInlineLate(SsaReadPosition pos, Sem::SsaVariable v) { pos.hasReadOfVar(v) } @@ -29,9 +29,7 @@ module ModulusAnalysis< * Holds if `e + delta` equals `v` at `pos`. */ pragma[nomagic] - private predicate valueFlowStepSsa( - Sem::SsaVariable v, Sem::SsaReadPosition pos, Sem::Expr e, int delta - ) { + private predicate valueFlowStepSsa(Sem::SsaVariable v, SsaReadPosition pos, Sem::Expr e, int delta) { U::semSsaUpdateStep(v, e, D::fromInt(delta)) and pos.hasReadOfVar(v) or exists(Sem::Guard guard, boolean testIsTrue | @@ -105,7 +103,7 @@ module ModulusAnalysis< /** * Holds if a guard ensures that `v` at `pos` is congruent with `val` modulo `mod`. */ - private predicate moduloGuardedRead(Sem::SsaVariable v, Sem::SsaReadPosition pos, int val, int mod) { + private predicate moduloGuardedRead(Sem::SsaVariable v, SsaReadPosition pos, int val, int mod) { exists(Sem::Guard guard, boolean testIsTrue | pos.hasReadOfVar(v) and guard = moduloCheck(v, val, mod, testIsTrue) and @@ -148,7 +146,7 @@ module ModulusAnalysis< * Holds if `inp` is an input to `phi` and equals `phi` modulo `mod` along `edge`. */ private predicate phiSelfModulus( - Sem::SsaPhiNode phi, Sem::SsaVariable inp, Sem::SsaReadPositionPhiInputEdge edge, int mod + Sem::SsaPhiNode phi, Sem::SsaVariable inp, SsaReadPositionPhiInputEdge edge, int mod ) { exists(Bounds::SemSsaBound phibound, int v, int m | edge.phiInput(phi, inp) and @@ -163,7 +161,7 @@ module ModulusAnalysis< * Holds if `b + val` modulo `mod` is a candidate congruence class for `phi`. */ private predicate phiModulusInit(Sem::SsaPhiNode phi, Bounds::SemBound b, int val, int mod) { - exists(Sem::SsaVariable inp, Sem::SsaReadPositionPhiInputEdge edge | + exists(Sem::SsaVariable inp, SsaReadPositionPhiInputEdge edge | edge.phiInput(phi, inp) and ssaModulus(inp, edge, b, val, mod) ) @@ -181,7 +179,7 @@ module ModulusAnalysis< rix = 0 and phiModulusInit(phi, b, val, mod) or - exists(Sem::SsaVariable inp, Sem::SsaReadPositionPhiInputEdge edge, int v1, int m1 | + exists(Sem::SsaVariable inp, SsaReadPositionPhiInputEdge edge, int v1, int m1 | mod != 1 and val = remainder(v1, mod) | @@ -192,7 +190,7 @@ module ModulusAnalysis< // equals `v2` modulo `mod`. The largest value of `mod` that satisfies // this is the greatest common divisor of `m1`, `m2`, and `v1 - v2`. exists(int v2, int m2 | - U::rankedPhiInput(phi, inp, edge, rix) and + rankedPhiInput(phi, inp, edge, rix) and phiModulusRankStep(phi, b, v1, m1, rix - 1) and ssaModulus(inp, edge, b, v2, m2) and mod = m1.gcd(m2).gcd(v1 - v2) @@ -202,7 +200,7 @@ module ModulusAnalysis< // preceding potential congruence class `b + v1` mod `m1`. The result will be // the congruence class modulo the greatest common divisor of `m1` and `m2`. exists(int m2 | - U::rankedPhiInput(phi, inp, edge, rix) and + rankedPhiInput(phi, inp, edge, rix) and phiModulusRankStep(phi, b, v1, m1, rix - 1) and phiSelfModulus(phi, inp, edge, m2) and mod = m1.gcd(m2) @@ -215,7 +213,7 @@ module ModulusAnalysis< */ private predicate phiModulus(Sem::SsaPhiNode phi, Bounds::SemBound b, int val, int mod) { exists(int r | - U::maxPhiInputRank(phi, r) and + maxPhiInputRank(phi, r) and phiModulusRankStep(phi, b, val, mod, r) ) } @@ -224,7 +222,7 @@ module ModulusAnalysis< * Holds if `v` at `pos` is equal to `b + val` modulo `mod`. */ private predicate ssaModulus( - Sem::SsaVariable v, Sem::SsaReadPosition pos, Bounds::SemBound b, int val, int mod + Sem::SsaVariable v, SsaReadPosition pos, Bounds::SemBound b, int val, int mod ) { phiModulus(v, b, val, mod) and pos.hasReadOfVar(v) or @@ -254,7 +252,7 @@ module ModulusAnalysis< val = 0 and b instanceof Bounds::SemZeroBound or - exists(Sem::SsaVariable v, Sem::SsaReadPositionBlock bb | + exists(Sem::SsaVariable v, SsaReadPositionBlock bb | ssaModulus(v, bb, b, val, mod) and e = v.getAUse() and bb.getBlock() = e.getBasicBlock() diff --git a/shared/rangeanalysis/codeql/rangeanalysis/RangeAnalysis.qll b/shared/rangeanalysis/codeql/rangeanalysis/RangeAnalysis.qll index 93758dedca7..3bb399dcebc 100644 --- a/shared/rangeanalysis/codeql/rangeanalysis/RangeAnalysis.qll +++ b/shared/rangeanalysis/codeql/rangeanalysis/RangeAnalysis.qll @@ -150,6 +150,16 @@ signature module Semantic { /** Gets an immediate successor of basic block `bb`, if any. */ BasicBlock getABasicBlockSuccessor(BasicBlock bb); + /** + * Gets an ideally unique integer for `bb`. If it is undesirable to make this + * unique, then `getBlock2` must provide a tiebreaker, such that the pair + * `(getBlockId1(bb),getBlockId2(bb))` becomes unique. + */ + int getBlockId1(BasicBlock bb); + + /** Gets a tiebreaker id in case `getBlockId1` is not unique. */ + default string getBlockId2(BasicBlock bb) { result = "" } + class Guard { string toString(); @@ -184,28 +194,15 @@ signature module Semantic { BasicBlock getBasicBlock(); } - class SsaPhiNode extends SsaVariable; + class SsaPhiNode extends SsaVariable { + /** Holds if `inp` is an input to the phi node along the edge originating in `bb`. */ + predicate hasInputFromBlock(SsaVariable inp, BasicBlock bb); + } class SsaExplicitUpdate extends SsaVariable { Expr getDefiningExpr(); } - class SsaReadPosition { - predicate hasReadOfVar(SsaVariable v); - } - - class SsaReadPositionPhiInputEdge extends SsaReadPosition { - BasicBlock getOrigBlock(); - - BasicBlock getPhiBlock(); - - predicate phiInput(SsaPhiNode phi, SsaVariable inp); - } - - class SsaReadPositionBlock extends SsaReadPosition { - BasicBlock getBlock(); - } - predicate conversionCannotOverflow(Type fromType, Type toType); } @@ -330,19 +327,6 @@ signature module UtilSig { * primitive types as the underlying primitive type. */ Sem::Type getTrackedType(Sem::Expr e); - - /** - * Holds if `inp` is an input to `phi` along `edge` and this input has index `r` - * in an arbitrary 1-based numbering of the input edges to `phi`. - */ - predicate rankedPhiInput( - Sem::SsaPhiNode phi, Sem::SsaVariable inp, Sem::SsaReadPositionPhiInputEdge edge, int r - ); - - /** - * Holds if `rix` is the number of input edges to `phi`. - */ - predicate maxPhiInputRank(Sem::SsaPhiNode phi, int rix); } signature module BoundSig { @@ -688,7 +672,7 @@ module RangeStage< * - `upper = false` : `v >= e + delta` */ private predicate boundFlowStepSsa( - Sem::SsaVariable v, Sem::SsaReadPosition pos, Sem::Expr e, D::Delta delta, boolean upper, + Sem::SsaVariable v, SsaReadPosition pos, Sem::Expr e, D::Delta delta, boolean upper, SemReason reason ) { semSsaUpdateStep(v, e, delta) and @@ -706,7 +690,7 @@ module RangeStage< /** Holds if `v != e + delta` at `pos` and `v` is of integral type. */ private predicate unequalFlowStepIntegralSsa( - Sem::SsaVariable v, Sem::SsaReadPosition pos, Sem::Expr e, D::Delta delta, SemReason reason + Sem::SsaVariable v, SsaReadPosition pos, Sem::Expr e, D::Delta delta, SemReason reason ) { getTrackedTypeForSsaVariable(v) instanceof Sem::IntegerType and exists(Sem::Guard guard, boolean testIsTrue | @@ -836,7 +820,7 @@ module RangeStage< * - `upper = false` : `v >= b + delta` */ private predicate boundedSsa( - Sem::SsaVariable v, SemBound b, D::Delta delta, Sem::SsaReadPosition pos, boolean upper, + Sem::SsaVariable v, SemBound b, D::Delta delta, SsaReadPosition pos, boolean upper, boolean fromBackEdge, D::Delta origdelta, SemReason reason ) { exists(Sem::Expr mid, D::Delta d1, D::Delta d2, SemReason r1, SemReason r2 | @@ -873,7 +857,7 @@ module RangeStage< * Holds if `v != b + delta` at `pos` and `v` is of integral type. */ private predicate unequalIntegralSsa( - Sem::SsaVariable v, SemBound b, D::Delta delta, Sem::SsaReadPosition pos, SemReason reason + Sem::SsaVariable v, SemBound b, D::Delta delta, SsaReadPosition pos, SemReason reason ) { exists(Sem::Expr e, D::Delta d1, D::Delta d2 | unequalFlowStepIntegralSsa(v, pos, e, d1, reason) and @@ -920,7 +904,7 @@ module RangeStage< * - `upper = false` : `inp >= b + delta` */ private predicate boundedPhiInp( - Sem::SsaPhiNode phi, Sem::SsaVariable inp, Sem::SsaReadPositionPhiInputEdge edge, SemBound b, + Sem::SsaPhiNode phi, Sem::SsaVariable inp, SsaReadPositionPhiInputEdge edge, SemBound b, D::Delta delta, boolean upper, boolean fromBackEdge, D::Delta origdelta, SemReason reason ) { edge.phiInput(phi, inp) and @@ -964,7 +948,7 @@ module RangeStage< pragma[noinline] private predicate boundedPhiInp1( Sem::SsaPhiNode phi, SemBound b, boolean upper, Sem::SsaVariable inp, - Sem::SsaReadPositionPhiInputEdge edge, D::Delta delta + SsaReadPositionPhiInputEdge edge, D::Delta delta ) { boundedPhiInp(phi, inp, edge, b, delta, upper, _, _, _) } @@ -976,7 +960,7 @@ module RangeStage< * - `upper = false` : `inp >= phi` */ private predicate selfBoundedPhiInp( - Sem::SsaPhiNode phi, Sem::SsaVariable inp, Sem::SsaReadPositionPhiInputEdge edge, boolean upper + Sem::SsaPhiNode phi, Sem::SsaVariable inp, SsaReadPositionPhiInputEdge edge, boolean upper ) { exists(D::Delta d, SemSsaBound phibound | phibound.getVariable() = phi and @@ -1009,8 +993,7 @@ module RangeStage< */ private predicate boundedPhiCandValidForEdge( Sem::SsaPhiNode phi, SemBound b, D::Delta delta, boolean upper, boolean fromBackEdge, - D::Delta origdelta, SemReason reason, Sem::SsaVariable inp, - Sem::SsaReadPositionPhiInputEdge edge + D::Delta origdelta, SemReason reason, Sem::SsaVariable inp, SsaReadPositionPhiInputEdge edge ) { boundedPhiCand(phi, upper, b, delta, fromBackEdge, origdelta, reason) and ( @@ -1036,7 +1019,7 @@ module RangeStage< Sem::SsaPhiNode phi, SemBound b, D::Delta delta, boolean upper, boolean fromBackEdge, D::Delta origdelta, SemReason reason, int rix ) { - exists(Sem::SsaVariable inp, Sem::SsaReadPositionPhiInputEdge edge | + exists(Sem::SsaVariable inp, SsaReadPositionPhiInputEdge edge | rankedPhiInput(phi, inp, edge, rix) and boundedPhiCandValidForEdge(phi, b, delta, upper, fromBackEdge, origdelta, reason, inp, edge) | @@ -1208,7 +1191,7 @@ module RangeStage< origdelta = delta and reason = TSemNoReason() or - exists(Sem::SsaVariable v, Sem::SsaReadPositionBlock bb | + exists(Sem::SsaVariable v, SsaReadPositionBlock bb | boundedSsa(v, b, delta, bb, upper, fromBackEdge, origdelta, reason) and e = v.getAUse() and bb.getBlock() = e.getBasicBlock() diff --git a/shared/rangeanalysis/codeql/rangeanalysis/internal/RangeUtils.qll b/shared/rangeanalysis/codeql/rangeanalysis/internal/RangeUtils.qll index 9c9046734b3..27205896014 100644 --- a/shared/rangeanalysis/codeql/rangeanalysis/internal/RangeUtils.qll +++ b/shared/rangeanalysis/codeql/rangeanalysis/internal/RangeUtils.qll @@ -1,38 +1,99 @@ private import codeql.rangeanalysis.RangeAnalysis module MakeUtils { + private import Lang + /** * Gets an expression that equals `v - d`. */ - Lang::Expr ssaRead(Lang::SsaVariable v, D::Delta delta) { + Expr ssaRead(SsaVariable v, D::Delta delta) { result = v.getAUse() and delta = D::fromInt(0) or - exists(D::Delta d1, Lang::ConstantIntegerExpr c | - result.(Lang::AddExpr).hasOperands(ssaRead(v, d1), c) and + exists(D::Delta d1, ConstantIntegerExpr c | + result.(AddExpr).hasOperands(ssaRead(v, d1), c) and delta = D::fromFloat(D::toFloat(d1) - c.getIntValue()) and // In the scope of `x += ..`, which is SSA translated as `x2 = x1 + ..`, // the variable `x1` is shadowed by `x2`, so there's no need to view this // as a read of `x1`. - not Lang::isAssignOp(result) + not isAssignOp(result) ) or - exists(Lang::SubExpr sub, D::Delta d1, Lang::ConstantIntegerExpr c | + exists(SubExpr sub, D::Delta d1, ConstantIntegerExpr c | result = sub and sub.getLeftOperand() = ssaRead(v, d1) and sub.getRightOperand() = c and delta = D::fromFloat(D::toFloat(d1) + c.getIntValue()) and - not Lang::isAssignOp(result) + not isAssignOp(result) ) or - result = v.(Lang::SsaExplicitUpdate).getDefiningExpr() and - if result instanceof Lang::PostIncExpr + result = v.(SsaExplicitUpdate).getDefiningExpr() and + if result instanceof PostIncExpr then delta = D::fromFloat(1) // x++ === ++x - 1 else - if result instanceof Lang::PostDecExpr + if result instanceof PostDecExpr then delta = D::fromFloat(-1) // x-- === --x + 1 else delta = D::fromFloat(0) or - result.(Lang::CopyValueExpr).getOperand() = ssaRead(v, delta) + result.(CopyValueExpr).getOperand() = ssaRead(v, delta) + } + + private newtype TSsaReadPosition = + TSsaReadPositionBlock(BasicBlock bb) { + exists(SsaVariable v | v.getAUse().getBasicBlock() = bb) + } or + TSsaReadPositionPhiInputEdge(BasicBlock bbOrig, BasicBlock bbPhi) { + exists(SsaPhiNode phi | phi.hasInputFromBlock(_, bbOrig) and bbPhi = phi.getBasicBlock()) + } + + /** + * A position at which an SSA variable is read. This includes both ordinary + * reads occurring in basic blocks and input to phi nodes occurring along an + * edge between two basic blocks. + */ + class SsaReadPosition extends TSsaReadPosition { + /** Holds if `v` is read at this position. */ + abstract predicate hasReadOfVar(SsaVariable v); + + /** Gets a textual representation of this SSA read position. */ + abstract string toString(); + } + + /** A basic block in which an SSA variable is read. */ + class SsaReadPositionBlock extends SsaReadPosition, TSsaReadPositionBlock { + /** Gets the basic block corresponding to this position. */ + BasicBlock getBlock() { this = TSsaReadPositionBlock(result) } + + override predicate hasReadOfVar(SsaVariable v) { exists(this.getAnSsaRead(v)) } + + pragma[nomagic] + Expr getAnSsaRead(SsaVariable v) { + v.getAUse() = result and result.getBasicBlock() = this.getBlock() + } + + override string toString() { result = "block" } + } + + /** + * An edge between two basic blocks where the latter block has an SSA phi + * definition. The edge therefore has a read of an SSA variable serving as the + * input to the phi node. + */ + class SsaReadPositionPhiInputEdge extends SsaReadPosition, TSsaReadPositionPhiInputEdge { + /** Gets the source of the edge. */ + BasicBlock getOrigBlock() { this = TSsaReadPositionPhiInputEdge(result, _) } + + /** Gets the target of the edge. */ + BasicBlock getPhiBlock() { this = TSsaReadPositionPhiInputEdge(_, result) } + + override predicate hasReadOfVar(SsaVariable v) { this.phiInput(_, v) } + + /** Holds if `inp` is an input to `phi` along this edge. */ + predicate phiInput(SsaPhiNode phi, SsaVariable inp) { + phi.hasInputFromBlock(inp, this.getOrigBlock()) and + this.getPhiBlock() = phi.getBasicBlock() + } + + override string toString() { result = "edge" } } /** @@ -40,10 +101,10 @@ module MakeUtils { * value `testIsTrue`. */ pragma[nomagic] - predicate guardDirectlyControlsSsaRead(Lang::Guard guard, Lang::SsaReadPosition controlled, boolean testIsTrue) { - guard.directlyControls(controlled.(Lang::SsaReadPositionBlock).getBlock(), testIsTrue) + predicate guardDirectlyControlsSsaRead(Guard guard, SsaReadPosition controlled, boolean testIsTrue) { + guard.directlyControls(controlled.(SsaReadPositionBlock).getBlock(), testIsTrue) or - exists(Lang::SsaReadPositionPhiInputEdge controlledEdge | controlledEdge = controlled | + exists(SsaReadPositionPhiInputEdge controlledEdge | controlledEdge = controlled | guard.directlyControls(controlledEdge.getOrigBlock(), testIsTrue) or guard.hasBranchEdge(controlledEdge.getOrigBlock(), controlledEdge.getPhiBlock(), testIsTrue) ) @@ -52,11 +113,11 @@ module MakeUtils { /** * Holds if `guard` controls the position `controlled` with the value `testIsTrue`. */ - predicate guardControlsSsaRead(Lang::Guard guard, Lang::SsaReadPosition controlled, boolean testIsTrue) { + predicate guardControlsSsaRead(Guard guard, SsaReadPosition controlled, boolean testIsTrue) { guardDirectlyControlsSsaRead(guard, controlled, testIsTrue) or - exists(Lang::Guard guard0, boolean testIsTrue0 | - Lang::implies_v2(guard0, testIsTrue0, guard, testIsTrue) and + exists(Guard guard0, boolean testIsTrue0 | + implies_v2(guard0, testIsTrue0, guard, testIsTrue) and guardControlsSsaRead(guard0, controlled, testIsTrue0) ) } @@ -64,9 +125,7 @@ module MakeUtils { /** * Holds if `inp` is an input to `phi` along a back edge. */ - predicate backEdge( - Lang::SsaPhiNode phi, Lang::SsaVariable inp, Lang::SsaReadPositionPhiInputEdge edge - ) { + predicate backEdge(SsaPhiNode phi, SsaVariable inp, SsaReadPositionPhiInputEdge edge) { edge.phiInput(phi, inp) and ( phi.getBasicBlock().bbDominates(edge.getOrigBlock()) or @@ -85,12 +144,33 @@ module MakeUtils { * dominated by the successor block, then mark all edges in a cycle in the resulting graph as back * edges. */ - private predicate irreducibleSccEdge(Lang::BasicBlock b1, Lang::BasicBlock b2) { + private predicate irreducibleSccEdge(BasicBlock b1, BasicBlock b2) { trimmedEdge(b1, b2) and trimmedEdge+(b2, b1) } - private predicate trimmedEdge(Lang::BasicBlock pred, Lang::BasicBlock succ) { - Lang::getABasicBlockSuccessor(pred) = succ and + private predicate trimmedEdge(BasicBlock pred, BasicBlock succ) { + getABasicBlockSuccessor(pred) = succ and not succ.bbDominates(pred) } + + /** + * Holds if `inp` is an input to `phi` along `edge` and this input has index `r` + * in an arbitrary 1-based numbering of the input edges to `phi`. + */ + predicate rankedPhiInput(SsaPhiNode phi, SsaVariable inp, SsaReadPositionPhiInputEdge edge, int r) { + edge.phiInput(phi, inp) and + edge = + rank[r](SsaReadPositionPhiInputEdge e | + e.phiInput(phi, _) + | + e order by getBlockId1(e.getOrigBlock()), getBlockId2(e.getOrigBlock()) + ) + } + + /** + * Holds if `rix` is the number of input edges to `phi`. + */ + predicate maxPhiInputRank(SsaPhiNode phi, int rix) { + rix = max(int r | rankedPhiInput(phi, _, _, r)) + } } From d510739ca29b79a759620711d990dde8c613bbf1 Mon Sep 17 00:00:00 2001 From: Alex Denisov Date: Wed, 8 Nov 2023 12:20:33 +0100 Subject: [PATCH 119/122] Swift: add 5.9 chagenote --- swift/ql/lib/change-notes/2023-11-08-swift-5.9.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 swift/ql/lib/change-notes/2023-11-08-swift-5.9.md diff --git a/swift/ql/lib/change-notes/2023-11-08-swift-5.9.md b/swift/ql/lib/change-notes/2023-11-08-swift-5.9.md new file mode 100644 index 00000000000..726b7b2e64f --- /dev/null +++ b/swift/ql/lib/change-notes/2023-11-08-swift-5.9.md @@ -0,0 +1,5 @@ +--- +category: majorAnalysis +--- +* Added Swift 5.9.1 support +* New AST node is extracted: `SingleValueStmtExpr` From f9132c5ff0085fc47389821727629e96f420df68 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 8 Nov 2023 13:44:58 +0100 Subject: [PATCH 120/122] Java: Duplicate a bit more code to postpone Java-C# cleanup. --- .../rangeanalysis/ModulusAnalysisSpecific.qll | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll index 7e13861c0da..35384874b0d 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll @@ -4,6 +4,7 @@ module Private { private import semmle.code.java.dataflow.RangeUtils as RU private import semmle.code.java.controlflow.Guards as G private import semmle.code.java.controlflow.BasicBlocks as BB + private import semmle.code.java.controlflow.internal.GuardsLogic as GL private import SsaReadPositionCommon class BasicBlock = BB::BasicBlock; @@ -100,9 +101,31 @@ module Private { } } - predicate guardDirectlyControlsSsaRead = RU::guardDirectlyControlsSsaRead/3; + /** + * Holds if `guard` directly controls the position `controlled` with the + * value `testIsTrue`. + */ + pragma[nomagic] + predicate guardDirectlyControlsSsaRead(Guard guard, SsaReadPosition controlled, boolean testIsTrue) { + guard.directlyControls(controlled.(SsaReadPositionBlock).getBlock(), testIsTrue) + or + exists(SsaReadPositionPhiInputEdge controlledEdge | controlledEdge = controlled | + guard.directlyControls(controlledEdge.getOrigBlock(), testIsTrue) or + guard.hasBranchEdge(controlledEdge.getOrigBlock(), controlledEdge.getPhiBlock(), testIsTrue) + ) + } - predicate guardControlsSsaRead = RU::guardControlsSsaRead/3; + /** + * Holds if `guard` controls the position `controlled` with the value `testIsTrue`. + */ + predicate guardControlsSsaRead(Guard guard, SsaReadPosition controlled, boolean testIsTrue) { + guardDirectlyControlsSsaRead(guard, controlled, testIsTrue) + or + exists(Guard guard0, boolean testIsTrue0 | + GL::implies_v2(guard0, testIsTrue0, guard, testIsTrue) and + guardControlsSsaRead(guard0, controlled, testIsTrue0) + ) + } predicate valueFlowStep = RU::valueFlowStep/3; From 8a3f29a6bf5e5af6b5d7ab8e8878b6a9f0a9f632 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 9 Nov 2023 03:49:54 +0000 Subject: [PATCH 121/122] Bump the extractor-dependencies group in /go/extractor with 1 update Bumps the extractor-dependencies group in /go/extractor with 1 update: [golang.org/x/tools](https://github.com/golang/tools). - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.14.0...v0.15.0) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-type: direct:production update-type: version-update:semver-minor dependency-group: extractor-dependencies ... Signed-off-by: dependabot[bot] --- go/extractor/go.mod | 4 +- go/extractor/go.sum | 12 +- .../golang.org/x/sys/execabs/execabs_go118.go | 1 - .../golang.org/x/sys/execabs/execabs_go119.go | 1 - .../tools/go/internal/packagesdriver/sizes.go | 15 +- .../golang.org/x/tools/go/packages/golist.go | 74 --- .../x/tools/go/packages/golist_overlay.go | 492 ------------------ .../x/tools/go/packages/packages.go | 165 +++--- .../x/tools/go/types/objectpath/objectpath.go | 117 +---- .../x/tools/internal/gocommand/invoke.go | 26 +- .../internal/typesinternal/objectpath.go | 24 - go/extractor/vendor/modules.txt | 6 +- 12 files changed, 149 insertions(+), 788 deletions(-) delete mode 100644 go/extractor/vendor/golang.org/x/tools/internal/typesinternal/objectpath.go diff --git a/go/extractor/go.mod b/go/extractor/go.mod index aa6d2a0048c..d06ab189973 100644 --- a/go/extractor/go.mod +++ b/go/extractor/go.mod @@ -4,7 +4,7 @@ go 1.21 require ( golang.org/x/mod v0.14.0 - golang.org/x/tools v0.14.0 + golang.org/x/tools v0.15.0 ) -require golang.org/x/sys v0.13.0 // indirect +require golang.org/x/sys v0.14.0 // indirect diff --git a/go/extractor/go.sum b/go/extractor/go.sum index 5d6ee2aa813..47781355a69 100644 --- a/go/extractor/go.sum +++ b/go/extractor/go.sum @@ -1,8 +1,8 @@ golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= -golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= +golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= diff --git a/go/extractor/vendor/golang.org/x/sys/execabs/execabs_go118.go b/go/extractor/vendor/golang.org/x/sys/execabs/execabs_go118.go index 2000064a812..5627d70e398 100644 --- a/go/extractor/vendor/golang.org/x/sys/execabs/execabs_go118.go +++ b/go/extractor/vendor/golang.org/x/sys/execabs/execabs_go118.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build !go1.19 -// +build !go1.19 package execabs diff --git a/go/extractor/vendor/golang.org/x/sys/execabs/execabs_go119.go b/go/extractor/vendor/golang.org/x/sys/execabs/execabs_go119.go index f364b341892..d60ab1b4195 100644 --- a/go/extractor/vendor/golang.org/x/sys/execabs/execabs_go119.go +++ b/go/extractor/vendor/golang.org/x/sys/execabs/execabs_go119.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build go1.19 -// +build go1.19 package execabs diff --git a/go/extractor/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go b/go/extractor/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go index 0454cdd78e5..333676b7cfc 100644 --- a/go/extractor/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go +++ b/go/extractor/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go @@ -13,16 +13,17 @@ import ( "golang.org/x/tools/internal/gocommand" ) -var debug = false - func GetSizesForArgsGolist(ctx context.Context, inv gocommand.Invocation, gocmdRunner *gocommand.Runner) (string, string, error) { inv.Verb = "list" inv.Args = []string{"-f", "{{context.GOARCH}} {{context.Compiler}}", "--", "unsafe"} stdout, stderr, friendlyErr, rawErr := gocmdRunner.RunRaw(ctx, inv) var goarch, compiler string if rawErr != nil { - if rawErrMsg := rawErr.Error(); strings.Contains(rawErrMsg, "cannot find main module") || strings.Contains(rawErrMsg, "go.mod file not found") { - // User's running outside of a module. All bets are off. Get GOARCH and guess compiler is gc. + rawErrMsg := rawErr.Error() + if strings.Contains(rawErrMsg, "cannot find main module") || + strings.Contains(rawErrMsg, "go.mod file not found") { + // User's running outside of a module. + // All bets are off. Get GOARCH and guess compiler is gc. // TODO(matloob): Is this a problem in practice? inv.Verb = "env" inv.Args = []string{"GOARCH"} @@ -32,8 +33,12 @@ func GetSizesForArgsGolist(ctx context.Context, inv gocommand.Invocation, gocmdR } goarch = strings.TrimSpace(envout.String()) compiler = "gc" - } else { + } else if friendlyErr != nil { return "", "", friendlyErr + } else { + // This should be unreachable, but be defensive + // in case RunRaw's error results are inconsistent. + return "", "", rawErr } } else { fields := strings.Fields(stdout.String()) diff --git a/go/extractor/vendor/golang.org/x/tools/go/packages/golist.go b/go/extractor/vendor/golang.org/x/tools/go/packages/golist.go index 1f1eade0ac8..c1292b30f3e 100644 --- a/go/extractor/vendor/golang.org/x/tools/go/packages/golist.go +++ b/go/extractor/vendor/golang.org/x/tools/go/packages/golist.go @@ -208,62 +208,6 @@ extractQueries: } } - // Only use go/packages' overlay processing if we're using a Go version - // below 1.16. Otherwise, go list handles it. - if goVersion, err := state.getGoVersion(); err == nil && goVersion < 16 { - modifiedPkgs, needPkgs, err := state.processGolistOverlay(response) - if err != nil { - return nil, err - } - - var containsCandidates []string - if len(containFiles) > 0 { - containsCandidates = append(containsCandidates, modifiedPkgs...) - containsCandidates = append(containsCandidates, needPkgs...) - } - if err := state.addNeededOverlayPackages(response, needPkgs); err != nil { - return nil, err - } - // Check candidate packages for containFiles. - if len(containFiles) > 0 { - for _, id := range containsCandidates { - pkg, ok := response.seenPackages[id] - if !ok { - response.addPackage(&Package{ - ID: id, - Errors: []Error{{ - Kind: ListError, - Msg: fmt.Sprintf("package %s expected but not seen", id), - }}, - }) - continue - } - for _, f := range containFiles { - for _, g := range pkg.GoFiles { - if sameFile(f, g) { - response.addRoot(id) - } - } - } - } - } - // Add root for any package that matches a pattern. This applies only to - // packages that are modified by overlays, since they are not added as - // roots automatically. - for _, pattern := range restPatterns { - match := matchPattern(pattern) - for _, pkgID := range modifiedPkgs { - pkg, ok := response.seenPackages[pkgID] - if !ok { - continue - } - if match(pkg.PkgPath) { - response.addRoot(pkg.ID) - } - } - } - } - sizeswg.Wait() if sizeserr != nil { return nil, sizeserr @@ -271,24 +215,6 @@ extractQueries: return response.dr, nil } -func (state *golistState) addNeededOverlayPackages(response *responseDeduper, pkgs []string) error { - if len(pkgs) == 0 { - return nil - } - dr, err := state.createDriverResponse(pkgs...) - if err != nil { - return err - } - for _, pkg := range dr.Packages { - response.addPackage(pkg) - } - _, needPkgs, err := state.processGolistOverlay(response) - if err != nil { - return err - } - return state.addNeededOverlayPackages(response, needPkgs) -} - func (state *golistState) runContainsQueries(response *responseDeduper, queries []string) error { for _, query := range queries { // TODO(matloob): Do only one query per directory. diff --git a/go/extractor/vendor/golang.org/x/tools/go/packages/golist_overlay.go b/go/extractor/vendor/golang.org/x/tools/go/packages/golist_overlay.go index 9576b472f9c..d823c474ad3 100644 --- a/go/extractor/vendor/golang.org/x/tools/go/packages/golist_overlay.go +++ b/go/extractor/vendor/golang.org/x/tools/go/packages/golist_overlay.go @@ -6,314 +6,11 @@ package packages import ( "encoding/json" - "fmt" - "go/parser" - "go/token" - "os" "path/filepath" - "regexp" - "sort" - "strconv" - "strings" "golang.org/x/tools/internal/gocommand" ) -// processGolistOverlay provides rudimentary support for adding -// files that don't exist on disk to an overlay. The results can be -// sometimes incorrect. -// TODO(matloob): Handle unsupported cases, including the following: -// - determining the correct package to add given a new import path -func (state *golistState) processGolistOverlay(response *responseDeduper) (modifiedPkgs, needPkgs []string, err error) { - havePkgs := make(map[string]string) // importPath -> non-test package ID - needPkgsSet := make(map[string]bool) - modifiedPkgsSet := make(map[string]bool) - - pkgOfDir := make(map[string][]*Package) - for _, pkg := range response.dr.Packages { - // This is an approximation of import path to id. This can be - // wrong for tests, vendored packages, and a number of other cases. - havePkgs[pkg.PkgPath] = pkg.ID - dir, err := commonDir(pkg.GoFiles) - if err != nil { - return nil, nil, err - } - if dir != "" { - pkgOfDir[dir] = append(pkgOfDir[dir], pkg) - } - } - - // If no new imports are added, it is safe to avoid loading any needPkgs. - // Otherwise, it's hard to tell which package is actually being loaded - // (due to vendoring) and whether any modified package will show up - // in the transitive set of dependencies (because new imports are added, - // potentially modifying the transitive set of dependencies). - var overlayAddsImports bool - - // If both a package and its test package are created by the overlay, we - // need the real package first. Process all non-test files before test - // files, and make the whole process deterministic while we're at it. - var overlayFiles []string - for opath := range state.cfg.Overlay { - overlayFiles = append(overlayFiles, opath) - } - sort.Slice(overlayFiles, func(i, j int) bool { - iTest := strings.HasSuffix(overlayFiles[i], "_test.go") - jTest := strings.HasSuffix(overlayFiles[j], "_test.go") - if iTest != jTest { - return !iTest // non-tests are before tests. - } - return overlayFiles[i] < overlayFiles[j] - }) - for _, opath := range overlayFiles { - contents := state.cfg.Overlay[opath] - base := filepath.Base(opath) - dir := filepath.Dir(opath) - var pkg *Package // if opath belongs to both a package and its test variant, this will be the test variant - var testVariantOf *Package // if opath is a test file, this is the package it is testing - var fileExists bool - isTestFile := strings.HasSuffix(opath, "_test.go") - pkgName, ok := extractPackageName(opath, contents) - if !ok { - // Don't bother adding a file that doesn't even have a parsable package statement - // to the overlay. - continue - } - // If all the overlay files belong to a different package, change the - // package name to that package. - maybeFixPackageName(pkgName, isTestFile, pkgOfDir[dir]) - nextPackage: - for _, p := range response.dr.Packages { - if pkgName != p.Name && p.ID != "command-line-arguments" { - continue - } - for _, f := range p.GoFiles { - if !sameFile(filepath.Dir(f), dir) { - continue - } - // Make sure to capture information on the package's test variant, if needed. - if isTestFile && !hasTestFiles(p) { - // TODO(matloob): Are there packages other than the 'production' variant - // of a package that this can match? This shouldn't match the test main package - // because the file is generated in another directory. - testVariantOf = p - continue nextPackage - } else if !isTestFile && hasTestFiles(p) { - // We're examining a test variant, but the overlaid file is - // a non-test file. Because the overlay implementation - // (currently) only adds a file to one package, skip this - // package, so that we can add the file to the production - // variant of the package. (https://golang.org/issue/36857 - // tracks handling overlays on both the production and test - // variant of a package). - continue nextPackage - } - if pkg != nil && p != pkg && pkg.PkgPath == p.PkgPath { - // We have already seen the production version of the - // for which p is a test variant. - if hasTestFiles(p) { - testVariantOf = pkg - } - } - pkg = p - if filepath.Base(f) == base { - fileExists = true - } - } - } - // The overlay could have included an entirely new package or an - // ad-hoc package. An ad-hoc package is one that we have manually - // constructed from inadequate `go list` results for a file= query. - // It will have the ID command-line-arguments. - if pkg == nil || pkg.ID == "command-line-arguments" { - // Try to find the module or gopath dir the file is contained in. - // Then for modules, add the module opath to the beginning. - pkgPath, ok, err := state.getPkgPath(dir) - if err != nil { - return nil, nil, err - } - if !ok { - break - } - var forTest string // only set for x tests - isXTest := strings.HasSuffix(pkgName, "_test") - if isXTest { - forTest = pkgPath - pkgPath += "_test" - } - id := pkgPath - if isTestFile { - if isXTest { - id = fmt.Sprintf("%s [%s.test]", pkgPath, forTest) - } else { - id = fmt.Sprintf("%s [%s.test]", pkgPath, pkgPath) - } - } - if pkg != nil { - // TODO(rstambler): We should change the package's path and ID - // here. The only issue is that this messes with the roots. - } else { - // Try to reclaim a package with the same ID, if it exists in the response. - for _, p := range response.dr.Packages { - if reclaimPackage(p, id, opath, contents) { - pkg = p - break - } - } - // Otherwise, create a new package. - if pkg == nil { - pkg = &Package{ - PkgPath: pkgPath, - ID: id, - Name: pkgName, - Imports: make(map[string]*Package), - } - response.addPackage(pkg) - havePkgs[pkg.PkgPath] = id - // Add the production package's sources for a test variant. - if isTestFile && !isXTest && testVariantOf != nil { - pkg.GoFiles = append(pkg.GoFiles, testVariantOf.GoFiles...) - pkg.CompiledGoFiles = append(pkg.CompiledGoFiles, testVariantOf.CompiledGoFiles...) - // Add the package under test and its imports to the test variant. - pkg.forTest = testVariantOf.PkgPath - for k, v := range testVariantOf.Imports { - pkg.Imports[k] = &Package{ID: v.ID} - } - } - if isXTest { - pkg.forTest = forTest - } - } - } - } - if !fileExists { - pkg.GoFiles = append(pkg.GoFiles, opath) - // TODO(matloob): Adding the file to CompiledGoFiles can exhibit the wrong behavior - // if the file will be ignored due to its build tags. - pkg.CompiledGoFiles = append(pkg.CompiledGoFiles, opath) - modifiedPkgsSet[pkg.ID] = true - } - imports, err := extractImports(opath, contents) - if err != nil { - // Let the parser or type checker report errors later. - continue - } - for _, imp := range imports { - // TODO(rstambler): If the package is an x test and the import has - // a test variant, make sure to replace it. - if _, found := pkg.Imports[imp]; found { - continue - } - overlayAddsImports = true - id, ok := havePkgs[imp] - if !ok { - var err error - id, err = state.resolveImport(dir, imp) - if err != nil { - return nil, nil, err - } - } - pkg.Imports[imp] = &Package{ID: id} - // Add dependencies to the non-test variant version of this package as well. - if testVariantOf != nil { - testVariantOf.Imports[imp] = &Package{ID: id} - } - } - } - - // toPkgPath guesses the package path given the id. - toPkgPath := func(sourceDir, id string) (string, error) { - if i := strings.IndexByte(id, ' '); i >= 0 { - return state.resolveImport(sourceDir, id[:i]) - } - return state.resolveImport(sourceDir, id) - } - - // Now that new packages have been created, do another pass to determine - // the new set of missing packages. - for _, pkg := range response.dr.Packages { - for _, imp := range pkg.Imports { - if len(pkg.GoFiles) == 0 { - return nil, nil, fmt.Errorf("cannot resolve imports for package %q with no Go files", pkg.PkgPath) - } - pkgPath, err := toPkgPath(filepath.Dir(pkg.GoFiles[0]), imp.ID) - if err != nil { - return nil, nil, err - } - if _, ok := havePkgs[pkgPath]; !ok { - needPkgsSet[pkgPath] = true - } - } - } - - if overlayAddsImports { - needPkgs = make([]string, 0, len(needPkgsSet)) - for pkg := range needPkgsSet { - needPkgs = append(needPkgs, pkg) - } - } - modifiedPkgs = make([]string, 0, len(modifiedPkgsSet)) - for pkg := range modifiedPkgsSet { - modifiedPkgs = append(modifiedPkgs, pkg) - } - return modifiedPkgs, needPkgs, err -} - -// resolveImport finds the ID of a package given its import path. -// In particular, it will find the right vendored copy when in GOPATH mode. -func (state *golistState) resolveImport(sourceDir, importPath string) (string, error) { - env, err := state.getEnv() - if err != nil { - return "", err - } - if env["GOMOD"] != "" { - return importPath, nil - } - - searchDir := sourceDir - for { - vendorDir := filepath.Join(searchDir, "vendor") - exists, ok := state.vendorDirs[vendorDir] - if !ok { - info, err := os.Stat(vendorDir) - exists = err == nil && info.IsDir() - state.vendorDirs[vendorDir] = exists - } - - if exists { - vendoredPath := filepath.Join(vendorDir, importPath) - if info, err := os.Stat(vendoredPath); err == nil && info.IsDir() { - // We should probably check for .go files here, but shame on anyone who fools us. - path, ok, err := state.getPkgPath(vendoredPath) - if err != nil { - return "", err - } - if ok { - return path, nil - } - } - } - - // We know we've hit the top of the filesystem when we Dir / and get /, - // or C:\ and get C:\, etc. - next := filepath.Dir(searchDir) - if next == searchDir { - break - } - searchDir = next - } - return importPath, nil -} - -func hasTestFiles(p *Package) bool { - for _, f := range p.GoFiles { - if strings.HasSuffix(f, "_test.go") { - return true - } - } - return false -} - // determineRootDirs returns a mapping from absolute directories that could // contain code to their corresponding import path prefixes. func (state *golistState) determineRootDirs() (map[string]string, error) { @@ -384,192 +81,3 @@ func (state *golistState) determineRootDirsGOPATH() (map[string]string, error) { } return m, nil } - -func extractImports(filename string, contents []byte) ([]string, error) { - f, err := parser.ParseFile(token.NewFileSet(), filename, contents, parser.ImportsOnly) // TODO(matloob): reuse fileset? - if err != nil { - return nil, err - } - var res []string - for _, imp := range f.Imports { - quotedPath := imp.Path.Value - path, err := strconv.Unquote(quotedPath) - if err != nil { - return nil, err - } - res = append(res, path) - } - return res, nil -} - -// reclaimPackage attempts to reuse a package that failed to load in an overlay. -// -// If the package has errors and has no Name, GoFiles, or Imports, -// then it's possible that it doesn't yet exist on disk. -func reclaimPackage(pkg *Package, id string, filename string, contents []byte) bool { - // TODO(rstambler): Check the message of the actual error? - // It differs between $GOPATH and module mode. - if pkg.ID != id { - return false - } - if len(pkg.Errors) != 1 { - return false - } - if pkg.Name != "" || pkg.ExportFile != "" { - return false - } - if len(pkg.GoFiles) > 0 || len(pkg.CompiledGoFiles) > 0 || len(pkg.OtherFiles) > 0 { - return false - } - if len(pkg.Imports) > 0 { - return false - } - pkgName, ok := extractPackageName(filename, contents) - if !ok { - return false - } - pkg.Name = pkgName - pkg.Errors = nil - return true -} - -func extractPackageName(filename string, contents []byte) (string, bool) { - // TODO(rstambler): Check the message of the actual error? - // It differs between $GOPATH and module mode. - f, err := parser.ParseFile(token.NewFileSet(), filename, contents, parser.PackageClauseOnly) // TODO(matloob): reuse fileset? - if err != nil { - return "", false - } - return f.Name.Name, true -} - -// commonDir returns the directory that all files are in, "" if files is empty, -// or an error if they aren't in the same directory. -func commonDir(files []string) (string, error) { - seen := make(map[string]bool) - for _, f := range files { - seen[filepath.Dir(f)] = true - } - if len(seen) > 1 { - return "", fmt.Errorf("files (%v) are in more than one directory: %v", files, seen) - } - for k := range seen { - // seen has only one element; return it. - return k, nil - } - return "", nil // no files -} - -// It is possible that the files in the disk directory dir have a different package -// name from newName, which is deduced from the overlays. If they all have a different -// package name, and they all have the same package name, then that name becomes -// the package name. -// It returns true if it changes the package name, false otherwise. -func maybeFixPackageName(newName string, isTestFile bool, pkgsOfDir []*Package) { - names := make(map[string]int) - for _, p := range pkgsOfDir { - names[p.Name]++ - } - if len(names) != 1 { - // some files are in different packages - return - } - var oldName string - for k := range names { - oldName = k - } - if newName == oldName { - return - } - // We might have a case where all of the package names in the directory are - // the same, but the overlay file is for an x test, which belongs to its - // own package. If the x test does not yet exist on disk, we may not yet - // have its package name on disk, but we should not rename the packages. - // - // We use a heuristic to determine if this file belongs to an x test: - // The test file should have a package name whose package name has a _test - // suffix or looks like "newName_test". - maybeXTest := strings.HasPrefix(oldName+"_test", newName) || strings.HasSuffix(newName, "_test") - if isTestFile && maybeXTest { - return - } - for _, p := range pkgsOfDir { - p.Name = newName - } -} - -// This function is copy-pasted from -// https://github.com/golang/go/blob/9706f510a5e2754595d716bd64be8375997311fb/src/cmd/go/internal/search/search.go#L360. -// It should be deleted when we remove support for overlays from go/packages. -// -// NOTE: This does not handle any ./... or ./ style queries, as this function -// doesn't know the working directory. -// -// matchPattern(pattern)(name) reports whether -// name matches pattern. Pattern is a limited glob -// pattern in which '...' means 'any string' and there -// is no other special syntax. -// Unfortunately, there are two special cases. Quoting "go help packages": -// -// First, /... at the end of the pattern can match an empty string, -// so that net/... matches both net and packages in its subdirectories, like net/http. -// Second, any slash-separated pattern element containing a wildcard never -// participates in a match of the "vendor" element in the path of a vendored -// package, so that ./... does not match packages in subdirectories of -// ./vendor or ./mycode/vendor, but ./vendor/... and ./mycode/vendor/... do. -// Note, however, that a directory named vendor that itself contains code -// is not a vendored package: cmd/vendor would be a command named vendor, -// and the pattern cmd/... matches it. -func matchPattern(pattern string) func(name string) bool { - // Convert pattern to regular expression. - // The strategy for the trailing /... is to nest it in an explicit ? expression. - // The strategy for the vendor exclusion is to change the unmatchable - // vendor strings to a disallowed code point (vendorChar) and to use - // "(anything but that codepoint)*" as the implementation of the ... wildcard. - // This is a bit complicated but the obvious alternative, - // namely a hand-written search like in most shell glob matchers, - // is too easy to make accidentally exponential. - // Using package regexp guarantees linear-time matching. - - const vendorChar = "\x00" - - if strings.Contains(pattern, vendorChar) { - return func(name string) bool { return false } - } - - re := regexp.QuoteMeta(pattern) - re = replaceVendor(re, vendorChar) - switch { - case strings.HasSuffix(re, `/`+vendorChar+`/\.\.\.`): - re = strings.TrimSuffix(re, `/`+vendorChar+`/\.\.\.`) + `(/vendor|/` + vendorChar + `/\.\.\.)` - case re == vendorChar+`/\.\.\.`: - re = `(/vendor|/` + vendorChar + `/\.\.\.)` - case strings.HasSuffix(re, `/\.\.\.`): - re = strings.TrimSuffix(re, `/\.\.\.`) + `(/\.\.\.)?` - } - re = strings.ReplaceAll(re, `\.\.\.`, `[^`+vendorChar+`]*`) - - reg := regexp.MustCompile(`^` + re + `$`) - - return func(name string) bool { - if strings.Contains(name, vendorChar) { - return false - } - return reg.MatchString(replaceVendor(name, vendorChar)) - } -} - -// replaceVendor returns the result of replacing -// non-trailing vendor path elements in x with repl. -func replaceVendor(x, repl string) string { - if !strings.Contains(x, "vendor") { - return x - } - elem := strings.Split(x, "/") - for i := 0; i < len(elem)-1; i++ { - if elem[i] == "vendor" { - elem[i] = repl - } - } - return strings.Join(elem, "/") -} diff --git a/go/extractor/vendor/golang.org/x/tools/go/packages/packages.go b/go/extractor/vendor/golang.org/x/tools/go/packages/packages.go index ece0e7c603e..6cbd3de83ec 100644 --- a/go/extractor/vendor/golang.org/x/tools/go/packages/packages.go +++ b/go/extractor/vendor/golang.org/x/tools/go/packages/packages.go @@ -258,31 +258,52 @@ type driverResponse struct { // proceeding with further analysis. The PrintErrors function is // provided for convenient display of all errors. func Load(cfg *Config, patterns ...string) ([]*Package, error) { - l := newLoader(cfg) - response, err := defaultDriver(&l.Config, patterns...) + ld := newLoader(cfg) + response, external, err := defaultDriver(&ld.Config, patterns...) if err != nil { return nil, err } - l.sizes = types.SizesFor(response.Compiler, response.Arch) - return l.refine(response) + + ld.sizes = types.SizesFor(response.Compiler, response.Arch) + if ld.sizes == nil && ld.Config.Mode&(NeedTypes|NeedTypesSizes|NeedTypesInfo) != 0 { + // Type size information is needed but unavailable. + if external { + // An external driver may fail to populate the Compiler/GOARCH fields, + // especially since they are relatively new (see #63700). + // Provide a sensible fallback in this case. + ld.sizes = types.SizesFor("gc", runtime.GOARCH) + if ld.sizes == nil { // gccgo-only arch + ld.sizes = types.SizesFor("gc", "amd64") + } + } else { + // Go list should never fail to deliver accurate size information. + // Reject the whole Load since the error is the same for every package. + return nil, fmt.Errorf("can't determine type sizes for compiler %q on GOARCH %q", + response.Compiler, response.Arch) + } + } + + return ld.refine(response) } // defaultDriver is a driver that implements go/packages' fallback behavior. // It will try to request to an external driver, if one exists. If there's // no external driver, or the driver returns a response with NotHandled set, // defaultDriver will fall back to the go list driver. -func defaultDriver(cfg *Config, patterns ...string) (*driverResponse, error) { - driver := findExternalDriver(cfg) - if driver == nil { - driver = goListDriver +// The boolean result indicates that an external driver handled the request. +func defaultDriver(cfg *Config, patterns ...string) (*driverResponse, bool, error) { + if driver := findExternalDriver(cfg); driver != nil { + response, err := driver(cfg, patterns...) + if err != nil { + return nil, false, err + } else if !response.NotHandled { + return response, true, nil + } + // (fall through) } - response, err := driver(cfg, patterns...) - if err != nil { - return response, err - } else if response.NotHandled { - return goListDriver(cfg, patterns...) - } - return response, nil + + response, err := goListDriver(cfg, patterns...) + return response, false, err } // A Package describes a loaded Go package. @@ -553,7 +574,7 @@ type loaderPackage struct { type loader struct { pkgs map[string]*loaderPackage Config - sizes types.Sizes + sizes types.Sizes // non-nil if needed by mode parseCache map[string]*parseValue parseCacheMu sync.Mutex exportMu sync.Mutex // enforces mutual exclusion of exportdata operations @@ -678,39 +699,38 @@ func (ld *loader) refine(response *driverResponse) ([]*Package, error) { } } - // Materialize the import graph. + if ld.Mode&NeedImports != 0 { + // Materialize the import graph. - const ( - white = 0 // new - grey = 1 // in progress - black = 2 // complete - ) + const ( + white = 0 // new + grey = 1 // in progress + black = 2 // complete + ) - // visit traverses the import graph, depth-first, - // and materializes the graph as Packages.Imports. - // - // Valid imports are saved in the Packages.Import map. - // Invalid imports (cycles and missing nodes) are saved in the importErrors map. - // Thus, even in the presence of both kinds of errors, the Import graph remains a DAG. - // - // visit returns whether the package needs src or has a transitive - // dependency on a package that does. These are the only packages - // for which we load source code. - var stack []*loaderPackage - var visit func(lpkg *loaderPackage) bool - var srcPkgs []*loaderPackage - visit = func(lpkg *loaderPackage) bool { - switch lpkg.color { - case black: - return lpkg.needsrc - case grey: - panic("internal error: grey node") - } - lpkg.color = grey - stack = append(stack, lpkg) // push - stubs := lpkg.Imports // the structure form has only stubs with the ID in the Imports - // If NeedImports isn't set, the imports fields will all be zeroed out. - if ld.Mode&NeedImports != 0 { + // visit traverses the import graph, depth-first, + // and materializes the graph as Packages.Imports. + // + // Valid imports are saved in the Packages.Import map. + // Invalid imports (cycles and missing nodes) are saved in the importErrors map. + // Thus, even in the presence of both kinds of errors, + // the Import graph remains a DAG. + // + // visit returns whether the package needs src or has a transitive + // dependency on a package that does. These are the only packages + // for which we load source code. + var stack []*loaderPackage + var visit func(lpkg *loaderPackage) bool + visit = func(lpkg *loaderPackage) bool { + switch lpkg.color { + case black: + return lpkg.needsrc + case grey: + panic("internal error: grey node") + } + lpkg.color = grey + stack = append(stack, lpkg) // push + stubs := lpkg.Imports // the structure form has only stubs with the ID in the Imports lpkg.Imports = make(map[string]*Package, len(stubs)) for importPath, ipkg := range stubs { var importErr error @@ -734,40 +754,39 @@ func (ld *loader) refine(response *driverResponse) ([]*Package, error) { } lpkg.Imports[importPath] = imp.Package } - } - if lpkg.needsrc { - srcPkgs = append(srcPkgs, lpkg) - } - if ld.Mode&NeedTypesSizes != 0 { - lpkg.TypesSizes = ld.sizes - } - stack = stack[:len(stack)-1] // pop - lpkg.color = black - return lpkg.needsrc - } + // Complete type information is required for the + // immediate dependencies of each source package. + if lpkg.needsrc && ld.Mode&NeedTypes != 0 { + for _, ipkg := range lpkg.Imports { + ld.pkgs[ipkg.ID].needtypes = true + } + } - if ld.Mode&NeedImports == 0 { - // We do this to drop the stub import packages that we are not even going to try to resolve. - for _, lpkg := range initial { - lpkg.Imports = nil + // NeedTypeSizes causes TypeSizes to be set even + // on packages for which types aren't needed. + if ld.Mode&NeedTypesSizes != 0 { + lpkg.TypesSizes = ld.sizes + } + stack = stack[:len(stack)-1] // pop + lpkg.color = black + + return lpkg.needsrc } - } else { + // For each initial package, create its import DAG. for _, lpkg := range initial { visit(lpkg) } - } - if ld.Mode&NeedImports != 0 && ld.Mode&NeedTypes != 0 { - for _, lpkg := range srcPkgs { - // Complete type information is required for the - // immediate dependencies of each source package. - for _, ipkg := range lpkg.Imports { - imp := ld.pkgs[ipkg.ID] - imp.needtypes = true - } + + } else { + // !NeedImports: drop the stub (ID-only) import packages + // that we are not even going to try to resolve. + for _, lpkg := range initial { + lpkg.Imports = nil } } + // Load type data and syntax if needed, starting at // the initial packages (roots of the import DAG). if ld.Mode&NeedTypes != 0 || ld.Mode&NeedSyntax != 0 { @@ -1042,7 +1061,7 @@ func (ld *loader) loadPackage(lpkg *loaderPackage) { IgnoreFuncBodies: ld.Mode&NeedDeps == 0 && !lpkg.initial, Error: appendError, - Sizes: ld.sizes, + Sizes: ld.sizes, // may be nil } if lpkg.Module != nil && lpkg.Module.GoVersion != "" { typesinternal.SetGoVersion(tc, "go"+lpkg.Module.GoVersion) diff --git a/go/extractor/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go b/go/extractor/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go index fa5834baf72..e742ecc4644 100644 --- a/go/extractor/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go +++ b/go/extractor/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go @@ -26,13 +26,10 @@ package objectpath import ( "fmt" "go/types" - "sort" "strconv" "strings" - _ "unsafe" "golang.org/x/tools/internal/typeparams" - "golang.org/x/tools/internal/typesinternal" ) // A Path is an opaque name that identifies a types.Object @@ -123,20 +120,7 @@ func For(obj types.Object) (Path, error) { // An Encoder amortizes the cost of encoding the paths of multiple objects. // The zero value of an Encoder is ready to use. type Encoder struct { - scopeMemo map[*types.Scope][]types.Object // memoization of scopeObjects - namedMethodsMemo map[*types.Named][]*types.Func // memoization of namedMethods() - skipMethodSorting bool -} - -// Expose back doors so that gopls can avoid method sorting, which can dominate -// analysis on certain repositories. -// -// TODO(golang/go#61443): remove this. -func init() { - typesinternal.SkipEncoderMethodSorting = func(enc interface{}) { - enc.(*Encoder).skipMethodSorting = true - } - typesinternal.ObjectpathObject = object + scopeMemo map[*types.Scope][]types.Object // memoization of scopeObjects } // For returns the path to an object relative to its package, @@ -328,31 +312,18 @@ func (enc *Encoder) For(obj types.Object) (Path, error) { // Inspect declared methods of defined types. if T, ok := o.Type().(*types.Named); ok { path = append(path, opType) - if !enc.skipMethodSorting { - // Note that method index here is always with respect - // to canonical ordering of methods, regardless of how - // they appear in the underlying type. - for i, m := range enc.namedMethods(T) { - path2 := appendOpArg(path, opMethod, i) - if m == obj { - return Path(path2), nil // found declared method - } - if r := find(obj, m.Type(), append(path2, opType), nil); r != nil { - return Path(r), nil - } + // The method index here is always with respect + // to the underlying go/types data structures, + // which ultimately derives from source order + // and must be preserved by export data. + for i := 0; i < T.NumMethods(); i++ { + m := T.Method(i) + path2 := appendOpArg(path, opMethod, i) + if m == obj { + return Path(path2), nil // found declared method } - } else { - // This branch must match the logic in the branch above, using go/types - // APIs without sorting. - for i := 0; i < T.NumMethods(); i++ { - m := T.Method(i) - path2 := appendOpArg(path, opMethod, i) - if m == obj { - return Path(path2), nil // found declared method - } - if r := find(obj, m.Type(), append(path2, opType), nil); r != nil { - return Path(r), nil - } + if r := find(obj, m.Type(), append(path2, opType), nil); r != nil { + return Path(r), nil } } } @@ -448,22 +419,13 @@ func (enc *Encoder) concreteMethod(meth *types.Func) (Path, bool) { path = append(path, name...) path = append(path, opType) - if !enc.skipMethodSorting { - for i, m := range enc.namedMethods(named) { - if m == meth { - path = appendOpArg(path, opMethod, i) - return Path(path), true - } - } - } else { - // This branch must match the logic of the branch above, using go/types - // APIs without sorting. - for i := 0; i < named.NumMethods(); i++ { - m := named.Method(i) - if m == meth { - path = appendOpArg(path, opMethod, i) - return Path(path), true - } + // Method indices are w.r.t. the go/types data structures, + // ultimately deriving from source order, + // which is preserved by export data. + for i := 0; i < named.NumMethods(); i++ { + if named.Method(i) == meth { + path = appendOpArg(path, opMethod, i) + return Path(path), true } } @@ -576,12 +538,7 @@ func findTypeParam(obj types.Object, list *typeparams.TypeParamList, path []byte // Object returns the object denoted by path p within the package pkg. func Object(pkg *types.Package, p Path) (types.Object, error) { - return object(pkg, string(p), false) -} - -// Note: the skipMethodSorting parameter must match the value of -// Encoder.skipMethodSorting used during encoding. -func object(pkg *types.Package, pathstr string, skipMethodSorting bool) (types.Object, error) { + pathstr := string(p) if pathstr == "" { return nil, fmt.Errorf("empty path") } @@ -747,12 +704,7 @@ func object(pkg *types.Package, pathstr string, skipMethodSorting bool) (types.O if index >= t.NumMethods() { return nil, fmt.Errorf("method index %d out of range [0-%d)", index, t.NumMethods()) } - if skipMethodSorting { - obj = t.Method(index) - } else { - methods := namedMethods(t) // (unmemoized) - obj = methods[index] // Id-ordered - } + obj = t.Method(index) default: return nil, fmt.Errorf("cannot apply %q to %s (got %T, want interface or named)", code, t, t) @@ -779,33 +731,6 @@ func object(pkg *types.Package, pathstr string, skipMethodSorting bool) (types.O return obj, nil // success } -// namedMethods returns the methods of a Named type in ascending Id order. -func namedMethods(named *types.Named) []*types.Func { - methods := make([]*types.Func, named.NumMethods()) - for i := range methods { - methods[i] = named.Method(i) - } - sort.Slice(methods, func(i, j int) bool { - return methods[i].Id() < methods[j].Id() - }) - return methods -} - -// namedMethods is a memoization of the namedMethods function. Callers must not modify the result. -func (enc *Encoder) namedMethods(named *types.Named) []*types.Func { - m := enc.namedMethodsMemo - if m == nil { - m = make(map[*types.Named][]*types.Func) - enc.namedMethodsMemo = m - } - methods, ok := m[named] - if !ok { - methods = namedMethods(named) // allocates and sorts - m[named] = methods - } - return methods -} - // scopeObjects is a memoization of scope objects. // Callers must not modify the result. func (enc *Encoder) scopeObjects(scope *types.Scope) []types.Object { diff --git a/go/extractor/vendor/golang.org/x/tools/internal/gocommand/invoke.go b/go/extractor/vendor/golang.org/x/tools/internal/gocommand/invoke.go index 53cf66da019..c27b91f8c7e 100644 --- a/go/extractor/vendor/golang.org/x/tools/internal/gocommand/invoke.go +++ b/go/extractor/vendor/golang.org/x/tools/internal/gocommand/invoke.go @@ -85,6 +85,7 @@ func (runner *Runner) RunPiped(ctx context.Context, inv Invocation, stdout, stde // RunRaw runs the invocation, serializing requests only if they fight over // go.mod changes. +// Postcondition: both error results have same nilness. func (runner *Runner) RunRaw(ctx context.Context, inv Invocation) (*bytes.Buffer, *bytes.Buffer, error, error) { ctx, done := event.Start(ctx, "gocommand.Runner.RunRaw", invLabels(inv)...) defer done() @@ -95,23 +96,24 @@ func (runner *Runner) RunRaw(ctx context.Context, inv Invocation) (*bytes.Buffer stdout, stderr, friendlyErr, err := runner.runConcurrent(ctx, inv) // If we encounter a load concurrency error, we need to retry serially. - if friendlyErr == nil || !modConcurrencyError.MatchString(friendlyErr.Error()) { - return stdout, stderr, friendlyErr, err - } - event.Error(ctx, "Load concurrency error, will retry serially", err) + if friendlyErr != nil && modConcurrencyError.MatchString(friendlyErr.Error()) { + event.Error(ctx, "Load concurrency error, will retry serially", err) + + // Run serially by calling runPiped. + stdout.Reset() + stderr.Reset() + friendlyErr, err = runner.runPiped(ctx, inv, stdout, stderr) + } - // Run serially by calling runPiped. - stdout.Reset() - stderr.Reset() - friendlyErr, err = runner.runPiped(ctx, inv, stdout, stderr) return stdout, stderr, friendlyErr, err } +// Postcondition: both error results have same nilness. func (runner *Runner) runConcurrent(ctx context.Context, inv Invocation) (*bytes.Buffer, *bytes.Buffer, error, error) { // Wait for 1 worker to become available. select { case <-ctx.Done(): - return nil, nil, nil, ctx.Err() + return nil, nil, ctx.Err(), ctx.Err() case runner.inFlight <- struct{}{}: defer func() { <-runner.inFlight }() } @@ -121,6 +123,7 @@ func (runner *Runner) runConcurrent(ctx context.Context, inv Invocation) (*bytes return stdout, stderr, friendlyErr, err } +// Postcondition: both error results have same nilness. func (runner *Runner) runPiped(ctx context.Context, inv Invocation, stdout, stderr io.Writer) (error, error) { // Make sure the runner is always initialized. runner.initialize() @@ -129,7 +132,7 @@ func (runner *Runner) runPiped(ctx context.Context, inv Invocation, stdout, stde // runPiped commands. select { case <-ctx.Done(): - return nil, ctx.Err() + return ctx.Err(), ctx.Err() case runner.serialized <- struct{}{}: defer func() { <-runner.serialized }() } @@ -139,7 +142,7 @@ func (runner *Runner) runPiped(ctx context.Context, inv Invocation, stdout, stde for i := 0; i < maxInFlight; i++ { select { case <-ctx.Done(): - return nil, ctx.Err() + return ctx.Err(), ctx.Err() case runner.inFlight <- struct{}{}: // Make sure we always "return" any workers we took. defer func() { <-runner.inFlight }() @@ -172,6 +175,7 @@ type Invocation struct { Logf func(format string, args ...interface{}) } +// Postcondition: both error results have same nilness. func (i *Invocation) runWithFriendlyError(ctx context.Context, stdout, stderr io.Writer) (friendlyError error, rawError error) { rawError = i.run(ctx, stdout, stderr) if rawError != nil { diff --git a/go/extractor/vendor/golang.org/x/tools/internal/typesinternal/objectpath.go b/go/extractor/vendor/golang.org/x/tools/internal/typesinternal/objectpath.go deleted file mode 100644 index 5e96e895573..00000000000 --- a/go/extractor/vendor/golang.org/x/tools/internal/typesinternal/objectpath.go +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2023 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package typesinternal - -import "go/types" - -// This file contains back doors that allow gopls to avoid method sorting when -// using the objectpath package. -// -// This is performance-critical in certain repositories, but changing the -// behavior of the objectpath package is still being discussed in -// golang/go#61443. If we decide to remove the sorting in objectpath we can -// simply delete these back doors. Otherwise, we should add a new API to -// objectpath that allows controlling the sorting. - -// SkipEncoderMethodSorting marks enc (which must be an *objectpath.Encoder) as -// not requiring sorted methods. -var SkipEncoderMethodSorting func(enc interface{}) - -// ObjectpathObject is like objectpath.Object, but allows suppressing method -// sorting. -var ObjectpathObject func(pkg *types.Package, p string, skipMethodSorting bool) (types.Object, error) diff --git a/go/extractor/vendor/modules.txt b/go/extractor/vendor/modules.txt index 6915c931e6d..9f02bbfd712 100644 --- a/go/extractor/vendor/modules.txt +++ b/go/extractor/vendor/modules.txt @@ -4,10 +4,10 @@ golang.org/x/mod/internal/lazyregexp golang.org/x/mod/modfile golang.org/x/mod/module golang.org/x/mod/semver -# golang.org/x/sys v0.13.0 -## explicit; go 1.17 +# golang.org/x/sys v0.14.0 +## explicit; go 1.18 golang.org/x/sys/execabs -# golang.org/x/tools v0.14.0 +# golang.org/x/tools v0.15.0 ## explicit; go 1.18 golang.org/x/tools/go/gcexportdata golang.org/x/tools/go/internal/packagesdriver From b4ec13235da38e36873ede4f6caa5b04c4cdef24 Mon Sep 17 00:00:00 2001 From: Cornelius Riemenschneider Date: Thu, 9 Nov 2023 09:40:29 +0100 Subject: [PATCH 122/122] Address review. --- javascript/extractor/lib/typescript/BUILD.bazel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/extractor/lib/typescript/BUILD.bazel b/javascript/extractor/lib/typescript/BUILD.bazel index 27b3c29e88a..f1676ac9e93 100644 --- a/javascript/extractor/lib/typescript/BUILD.bazel +++ b/javascript/extractor/lib/typescript/BUILD.bazel @@ -9,7 +9,7 @@ genrule( "package-lock.json", ] + glob(["src/**"]), outs = ["javascript.zip"], - cmd = " && ".join([ + cmd = "\n".join([ # the original working directory is not preserved anywhere, but needs to be accessible, as # all paths are relative to this # unfortunately, we need to change the working directory to run npm.